GitHub: faire de fork un "propre projet"

118

J'ai trouvé un beau projet GitHub que j'ai beaucoup étendu. Je pense que mes changements sont bons, car ils fonctionnent. Mais il semble que l'auteur original n'ait pas eu le temps d'examiner ces changements et de les inclure. En fait, il est même possible que les fonctionnalités dont j'ai besoin et implémentées ne soient pas dans la vision de l'auteur original et que nous visons simplement des objectifs différents. Je ne sais pas car je n'ai jamais reçu de réponse de sa part.

Cela dit, j'ai vu que mes contributions ne sont pas comptabilisées dans ma carte de validation. C'est le cas tant que le référentiel d'origine n'accepte pas mes contributions. De plus, mon travail n'est reconnu que comme un travail et n'attire personne d'autre avec la même vision que moi. C'est le plus gros problème pour moi, car je vois beaucoup de gens demander ces fonctionnalités.

J'offre toujours mes contributions au projet original, mais je vois qu'il est peu probable qu'elles soient jamais acceptées. Maintenant je voudrais faire de ma fourchette un "vrai projet". Bien que je prévois de me synchroniser avec le projet original à certains moments, je souhaite le renommer et motiver les gens à contribuer également à mon projet. De plus, j'aimerais beaucoup que GitHub montre que ce projet est activement maintenu (en parlant de la carte de commit). Et enfin, j'adorerais en faire des versions appropriées.

Comment puis-je y parvenir et faire de mon fork un projet à part entière?

Christian
la source
Je suis confus, peut-être que les choses ont changé depuis 2014, mais mon projet TightBlog est répertorié comme un fork d'Apache Roller dans le coin supérieur gauche: github.com/gmazza/tightblog , mais je reçois tout le crédit pour tous mes problèmes , PR, etc., même si aucun travail n'est appliqué au projet principal d'Apache Roller mais juste à mon fork: ( github.com/gmazza?tab=overview&period=monthly ). Je ne sais plus ce que l'on gagne en faisant d'un fork un projet autonome.
Glen Mazza

Réponses:

75

Pour détacher le fork et le transformer en un référentiel autonome sur GitHub, contactez le support GitHub .

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/#commit-was-made-in-a-fork

Oleh Prypin
la source
9
En outre, cela permettra de garder les astronomes, les observateurs et le réseau de fourches. Contrairement à la création d'un nouveau repo à partir de zéro.
Johnco
1
Il convient de noter que le support GitHub m'a donné le choix de reparenter les fourches enfants ou de les garder attachées à mon propre référentiel.
gmarmstrong
41

Pour ce faire, vous devez dupliquer le référentiel . La version courte est:

  1. Créez un nouveau référentiel sur GitHub.
  2. Clonez le référentiel forké que vous souhaitez détacher de son parent.
  3. Poussez toutes les branches de ce clone vers votre nouveau référentiel.
cdhowie
la source
Si vous voulez que votre référentiel ait toujours le même nom, vous pouvez probablement cloner votre référentiel, le supprimer sur GitHub, créer un nouveau projet avec le même nom et tout pousser.
Rory O'Kane
12
Il semble que les demandes d'extraction GitHub ne peuvent se trouver que sur les fourches GitHub d'un projet. Donc, si vous dupliquez votre référentiel, vous ne pouvez pas faire de pull request depuis le nouveau référentiel. Et si vous supprimez et remplacez votre ancien référentiel, toutes vos demandes d'extraction existantes seront probablement fermées car GitHub pensera que le code a été supprimé et vous ne pourrez pas faire de nouvelles demandes d'extraction.
Rory O'Kane
9
Le vote à la baisse, car cela peut induire les gens en erreur à faire des actions inutiles. La réponse d'Oleh devrait être acceptée à la place: la solution consiste à contacter le support GitHub. Il a fallu moins d'une heure pour convertir ma fourchette en un repo autonome.
Georgii Ivankin
5

C'est super simple:

  1. Cloner le dépôt quelque part: git clone [email protected]:USERNAME/REPOSITORY.git(assurez-vous de l'avoir cloné)
  2. Supprimer le référentiel dans GitHub (Paramètres> Options> Supprimer ce référentiel)
  3. Créer un nouveau dépôt vide dans GitHub
  4. git remote set-url origin [email protected]:USERNAME/NEW_REPOSITORY.git(si vous avez utilisé le même nom pour le repo, alors NEW_REPOSITORY== REPOSITORY👍🏻)
  5. git push
  6. 🙌🏻

(J'utilise ssh, mais si vous utilisez https, vos URL github ressembleront à https://github.com/USERNAME/REPOSITORY.git)

Gerbus
la source
1

Vous devez d'abord vérifier si la licence vous permet de le faire, de manière générale, l'Open Source vous oblige à le faire car il s'agit de l'évolution du logiciel sans chaînes. Si tel est le cas, créez simplement un nouveau dépôt. N'oubliez pas de créditer les auteurs originaux et de démarrer votre projet.

jethroo
la source
3
C'est sous licence MIT et oui, je prévois de donner des crédits comme d'habitude. En fait, j'aurais préféré que l'auteur original ait simplement accepté mon code (ou me dise pourquoi il ne le fait pas)
Christian
1
Si la licence ne vous permet pas de créer un référentiel qui n'est pas un fork GitHub de l'original, alors le projet ne doit pas être un projet GitHub public en premier lieu, car les projets publics sont censés être publiés sous une licence open source . Je ne peux penser à aucune licence open source qui interdit de faire des copies de code. C'est en quelque sorte l'intérêt de l'open source. (Bien sûr, il peut y avoir des exigences d'attribution - mais celles-ci peuvent être satisfaites sans qu'un projet soit un «bon» fork de GitHub.)
cdhowie
L'auteur devrait certainement faire de son projet un logiciel libre, mais s'il ne le fait pas (par exemple, s'il n'y a pas de licence), alors le projet n'est pas libre: stackoverflow.com/a/16934573/6791398
gmarmstrong