GitHub: rouvrir une demande d'extraction fusionnée

101
  • J'ai fait quelques changements
  • J'ai soumis une demande d'extraction
  • La demande d'extraction a été acceptée et fusionnée.
  • Nous avons trouvé un bug
  • Les modifications ont été supprimées à nouveau pendant que j'ai corrigé le bogue.

J'ai maintenant corrigé le bogue et je veux resoumettre la demande d'extraction avec 1 commit supplémentaire. Existe-t-il un moyen de rouvrir la demande d'extraction ou de la mettre à jour, ou dois-je créer une nouvelle demande d'extraction, taper à nouveau la description, etc.? Gitorious a cette fonctionnalité et nous sommes récemment passés à GitHub.

Michael Parker
la source
J'étais dans une situation similaire aujourd'hui, c'est-à-dire que j'ai utilisé le bouton "Merge Pull Request" qui, par défaut, fusionne les modifications dans la branche cible et ferme le PR. J'ai découvert plus tard un bogue dans les tests que je voulais que le développeur d'origine corrige. Je voulais un moyen de rouvrir ce PR afin que plus de commits puissent être ajoutés à ce même PR mais je ne pouvais pas car il n'y a pas de bouton pour rouvrir le PR.
SBirthare

Réponses:

114

La réponse semble être: vous ne pouvez pas.

Une fois qu'une demande d'extraction est fusionnée et fermée, elle est verrouillée pour toujours et ne peut pas être rouverte. Si votre pull request est fusionné, fermé, alors vos modifications sont retirées (via une poussée vers l'arrière avant la fusion), vous devrez ajouter des commits à la branche et créer une nouvelle pull request, en copiant tous les détails et en fournissant probablement un lien vers la demande d'extraction d'origine pour enregistrer manuellement l'historique.

Cela pourrait être une belle demande de fonctionnalité pour le futur GitHub.

Michael Parker
la source
8
Je ne sais pas quand cela a été changé, mais vous pouvez commenter et rouvrir les RP fermés maintenant.
LB--
16
@LB, il ne semble pas que vous puissiez rouvrir les PR qui ont été fermés et fusionnés .
A Kaptur
1
Vous pouvez réellement. En supposant que vous avez annulé la fusion initiale, vous pouvez créer une branche du référentiel principal, et sur cette nouvelle branche, il suffit de revenir sur la validation qui annulait la fusion.
SsjCosty
7
@SsjCosty Mais ce n'est pas la réouverture d'un PR fermé et fusionné. Vous pouvez toujours ouvrir de nouvelles demandes d'extraction, ce qui est requis par votre solution.
Adam Grant
1
"Cela pourrait être une belle demande de fonctionnalité pour le futur GitHub." En fait, non, ce ne serait pas le cas. Si les PR pouvaient être redéfinis après leur création, alors les personnes qui consultaient le PR à des moments différents pourraient dériver. Créez simplement un autre PR et «mentionnez» le précédent dans le texte. Si vous voulez référencer une sorte de jalon, ce ne sont pas des PR à regarder, ce seraient des balises.
Scott Prive
12

Je viens de rouvrir avec succès une demande d'extraction par

  1. Commenter la pull request
  2. Cliquez sur le bouton «Soumettre et rouvrir» qui apparaît sur le formulaire de commentaire.
Tim Lovell-Smith
la source
1
Je n'ai pas réussi à reproduire cela - pouvez-vous expliquer les étapes nécessaires pour voir ce comportement? J'ai essayé de commenter une demande de tirage fermée (ne fonctionnait pas), de commenter une demande de tirage fermée et de pousser vers la branche dans laquelle elle tirait (ne fonctionnait pas). Y a-t-il autre chose à essayer? La demande d'extraction doit-elle être fusionnée puis dissociée plus tard d'une manière ou d'une autre?
Michael Parker
Je ne sais pas quelle est l'exigence cachée qui fait la différence. Pourrait être l'un des (avoir soumis un nouveau changement pour la demande d'extraction, je suis membre des propriétaires de projet, autre ...)
Tim Lovell-Smith
1
J'ai maintenant essayé tout ce que vous avez mentionné, je ne peux toujours pas le voir. Je suis le propriétaire du repo. La recherche sur Google de "Soumettre et rouvrir GitHub" fournit un seul appel - cette page. Toute information supplémentaire serait extrêmement utile. Votre demande d'extraction a-t-elle été initialement refusée?
Michael Parker
52
Je peux répliquer cela avec des demandes d'extraction non fusionnées - mais ce n'est pas le sujet de ce fil.
Dan Tello
2
Oui, il fait référence à des tirages fermés, pas à des tirages fusionnés.
loujaybee
4

Dérivez simplement une nouvelle branche de la branche existante où vous avez effectué 1 commit supplémentaire. À partir de là, soumettez la demande d'extraction.

Siva Gollapalli
la source
3
Cela entraînerait une nouvelle demande d'extraction sans l'historique de l'original.
Dave le
1
C'est ce que j'ai fini par faire. Oui, l'histoire est moins linéaire mais ça me va.
possen
4

Vous pouvez utiliser l'action de retour:

entrez la description de l'image ici

Cela créera une autre demande d'extraction annulant toutes les modifications apportées dans le PR fusionné.

William Weckl
la source
Ce n'est pas la meilleure pratique :)
antonbormotov
2
@antonbormotov pouvez-vous suggérer une meilleure approche?
William Weckl
Supposons que nous ayons fusionné pr avec des commits (mA et mB) vers une branche stable que nous voulons rétablir. Après avoir fusionné "revert" pr, l'historique ressemblera à l'arbre des commits: XY-mA-mB-CD-rA-rB-EF. Pourquoi voulez-vous voir tous ces commits dans l'historique, qui appliquent les modifications (mA, mB) puis les annulent (rA, rB)? Il serait préférable de rebaser et de supprimer ces "mauvais" commits mA et mB de la branche stable et de garder l'historique propre. Bien sûr, il est logique que la fusion soit relativement récente.
antonbormotov
1
Non seulement l'historique aura l'air moche, mais vous ne pourrez plus simplement fusionner les commits rétablis lorsque vous serez prêt.
Michael le
J'ai eu un scénario quelque peu similaire avec une différence mineure. J'avais un PR que je devais revoir et je devais attendre la fusion d'un autre PR. Mais je ne l'ai pas vu et j'ai fusionné ce PR prématurément. J'ai fait ce que @WilliamWeckl a suggéré. Mais maintenant, je veux créer le même PR avec les mêmes changements qui ont été créés à l'origine. Mais lorsque je crée le PR, la branche principale ne montre aucune différence, bien que lorsque je vois des fichiers individuels, ils sont différents. Des pensées?
Vikas