J'ai récemment participé à un projet de GitHub. J'ai fait ce qui suit:
Forked le référentiel d'origine, cloné sur ma machine locale, créé une branche pour corriger le bogue existant, correction du bogue dans cette branche, poussé cette branche vers mon référentiel, envoyer une pull request à l'auteur du référentiel pour fusionner ma branche de correctif avec sa branche principale.
C'était la première fois que je m'engageais sur le code d'un autre donc je ne sais pas quoi faire. Maintenant, ma demande d'extraction a été fusionnée avec le dépôt / projet d'origine par l'auteur.
Que devrais-je faire ensuite? Dois-je supprimer la branche? Dois-je fusionner la succursale? Rien d'autre?
Information additionnelle:
Le projet d'origine a une seule branche.
J'ai également un ensemble en amont pour obtenir les dernières mises à jour du dépôt d'origine. (Je l'ai fait comme ça) :
git remote add upstream https://path/to/original/repo.git
Et je reçois des mises à jour comme celle-ci:
git fetch upstream
:)
Réponses:
Ce qu'il faut faire ensuite est: continuer à apporter de nouvelles fonctionnalités ou à corriger d'autres bogues dans leurs propres branches dédiées (poussées uniquement à votre fourchette).
Cela signifie que votre fourche reste, mais les branches à l'intérieur de votre fourche peuvent aller et venir.
Vous pouvez également supprimer le fork si vous ne prévoyez pas de contribuer davantage, mais cela supprimera l'entrée correspondante dans les «Référentiels auxquels vous contribuez» .
Il est plus facile de:
fix
branche (en fait, elle est maintenant supprimée pour vous ) sur votre fork (et dans votre repo local cloné: voir " Supprimer une branche Git à la fois localement et à distance ")git pull upstream master
(simaster
était la branche dans laquelle votre correctif a été intégré: la fusion sera une avance rapide): aucun rebase n'est nécessaire à ce stade.master
(maintenant avec la dernière version deupstream master
).Cependant, n'oubliez jamais une étape avant de soumettre toute future pull request:
rebase d'abord votre branche actuelle (
fix
) depuis la branche de destination en amont(
upstream
étant le dépôt d'origine que vous avez forké: voir " Quelle est la différence entre l'origine et l'amont dans github ")Avant de renvoyer quoi que ce soit au référentiel d'origine ("en amont"), vous devez vous assurer que votre travail est basé sur le dernier en date dudit référentiel d'origine (sinon la demande d'extraction n'entraînera pas une fusion rapide une fois appliquée retour sur
upstream
repo).Voir, par exemple, " Workflow pour gérer les demandes d'extraction sur les dépôts partagés dans github ".
En d'autres termes,
upstream
peut évoluer (avoir de nouveaux commits) pendant que vous êtes occupé à réparer des choses. Vous devez rejouer vos correctifs en plus de ce dernier travail en amont pour vous assurer que vos commits sont toujours compatibles avec le dernier desupstream
.L' OP Santosh Kumar demande dans les commentaires :
Si vous n'avez pas apporté de nouveaux correctifs depuis votre récente pull request, voir ci-dessus (supprimez et recréez une nouvelle branche
fix
en plus de votremaster
).Si vous avez fait plus de travail depuis votre pull request, je ne fusionnerais pas
upstream
si je voulais faire une nouvelle pull request: je tirerais et rebaserais :De cette façon, tous mes nouveaux travaux locaux sont rejoués en plus des derniers
upstream
master
commits (récupérés dans mon dépôt local), en supposant quemaster
c'est la branche cible qui intégrera ma future pull request.Ensuite, je peux pousser mon travail local vers '
origin
', qui est mon fork sur GitHub deupstream
.Et à partir de mon fork sur GitHub, je peux faire une pull request en toute sécurité, sachant que cela ne fera qu'ajouter de nouveaux commits à
upstream
sans avoir besoin de résolution de fusion: la fusion de ces nouveaux commits dans leupstream
dépôt signifiera une simple fusion rapide.UNE
git pull --rebase
sans spécifier la branche au-dessus de laquelle vous souhaitez rebaser votre branche (actuellement extraite)fix
ne fonctionnerait pas:Oui, vous pouvez spécifier la branche qui sera la cible de la pull request, par exemple '
master
'.Cela ne supprimera pas votre
fix
branche, mais la rejouera en plus de lamaster
récupération en amont dans votre dépôt.la source
You asked to pull from the remote 'upstream', but did not specify a branch.
dois-je enfin ajoutermaster
? Et qu'est-ce que cela va faire?, Va-t-il supprimer ma branche de correction ?Tout d'abord, félicitations pour votre première contribution à un projet sur Github.
Le flux de travail habituel de Github consiste à créer une nouvelle branche pour chaque problème que vous résolvez. De cette façon, le responsable du référentiel principal peut décider laquelle de vos solutions fusionner et laquelle rejeter. Une fois qu'une branche a été fusionnée en amont, la branche ne sera plus nécessaire et peut généralement être supprimée.
la source