Question Ma demande de tirage a été fusionnée, que faire ensuite?


J'ai récemment participé à un projet de GitHub. J'ai fait ce qui suit:

Fourré le dépôt d'origine, cloné sur mon ordinateur local, créé une branche pour corriger un bogue existant, un bogue corrigé étant dans cette branche, poussé cette branche vers mon dépôt, envoyé une requête d'extraction à l'auteur du référentiel pour fusionner mon réparer branche à sa branche principale.

C'était la première fois que je m'engageais sur le code d'un autre, alors je ne sais pas quoi faire. Maintenant, ma demande de tirage a été fusionnée avec le repo / projet original par l'auteur.

Que devrais-je faire ensuite? Dois-je supprimer la branche? Devrais-je fusionner la branche? 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 initial. (Je l'ai fait comme ça):

git remote add upstream https://path/to/original/repo.git

Et je reçois des mises à jour comme celles-ci:

git fetch upstream

95
2017-10-07 16:18


origine


Réponses:


Que faire ensuite est de continuer à apporter de nouvelles fonctionnalités ou de corriger d’autres bogues dans leurs propres branches dédiées (uniquement sur votre fork).

Cela signifie que votre fourche reste, mais les branches dans votre fourche peuvent aller et venir.

Vous pouvez également retirer la fourche si vous ne prévoyez pas de contribuer davantage, mais supprimera l'entrée correspondante dans 'Référentiels auxquels vous contribuez'.

Il est plus facile de:

  • supprimer votre fix branche (en fait, il est maintenant supprimé pour vous) sur votre fourchette (et dans votre repo local cloné: voir "Supprimer une branche Git à la fois localement et à distance")
  • git pull upstream master (si master a été la branche dans laquelle votre correctif a été intégré: la fusion sera un rapide): pas de rebase nécessaire à ce stade.
  • recréer une branche de correctif par-dessus votre local mis à jour master (maintenant avec le dernier de upstream master).

Cependant, ne jamais oublier une étape avant de soumettre avenir demande de tirage:

rebase d'abord votre branche actuelle (fix) de la branche de destination en amont

(upstream être le repo original que vous avez fourché: voir "Quelle est la différence entre origine et amont dans github")

Avant de soumettre quoi que ce soit au dépôt initial ("en amont"), vous devez vous assurer que votre travail est basé sur le dernier à partir de ce repo original (ou la demande de tirage n'entraînera pas une fusion rapide une fois appliquée sur upstream repo).
Voir, par exemple, "Workflow pour la gestion des demandes d'extraction sur les repos partagés dans github".

En d'autres termes, upstream peut évoluer (faire de nouveaux commits) pendant que vous êtes en train de réparer des choses. Vous devez relire vos correctifs par-dessus ces derniers travaux en amont pour vous assurer que vos commits sont toujours compatibles avec les dernières upstream.


le OP Santosh Kumar demande dans les commentaires:

J'ai tiré et fusionné de upstream maîtriser, maintenant quoi?

Si vous n'avez pas effectué de nouveaux correctifs depuis votre dernière demande d'extraction, voir ci-dessus (supprimez et recréez une nouvelle branche). fixen haut de votre mise à jour master).

Si vous avez fait plus de travail depuis votre requête de tirage, je ne fusionnerais pas de upstream si je veux faire un Nouveau demande de tirage: je tirerais et rebase:

git pull --rebase upstream master

De cette façon, tout mon nouveau travail local est rejoué sur le plus récent upstream  master commits (récupérés dans mon repo local), en supposant que master est la branche cible qui intégrera ma demande de tirage future.

Alors je peux pousser mon travail local à 'origin', qui est ma fourchette sur GitHub de upstream.
Et à partir de mon fork sur GitHub, je peux faire une demande de tirage en toute sécurité, sachant qu’elle n’ajoutera que de nouveaux commits à upstream sans avoir besoin d'une résolution de fusion: fusionner ces nouveaux commits dans upstream repo signifie une simple fusion rapide.


UNE git pull --rebase sans spécifier la branche en haut de laquelle vous souhaitez rebaser votre (actuellement extrait) fix branche ne fonctionnerait pas:

Cette (git pull --rebase) dit:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

Devrais-je ajouter le master enfin? Et qu'est-ce que cela fera?, Va-t-il supprimer mon fix branche?

Oui, vous pouvez spécifier la branche qui sera la cible de la requête pull, par exemple 'master'.
Cela ne supprimera pas votre fix branche, mais le rejouera au-dessus de l'amont master récupéré dans votre repo.


58
2017-10-07 19:18



Tout d'abord, félicitations pour votre première contribution à un projet sur Github.

Le workflow Github habituel consiste à créer une nouvelle branche pour chaque problème que vous résolvez. De cette manière, le responsable du référentiel principal peut décider laquelle de vos solutions fusionner et laquelle rejeter. Une fois la branche fusionnée en amont, la branche ne sera plus nécessaire et peut généralement être supprimée.


14
2017-10-07 16:25