web-dev-qa-db-fra.com

Annuler un commit de fusion d'une branche protégée sur GitHub.com

Nous avons protégé notre branche de développement sur GitHub afin que personne en aval ne puisse directement pousser leur engagement. Les commits doivent passer par une branche de fonctionnalité spécifique et être fusionnés via une demande d'extraction.

Il est arrivé un scénario dans lequel une branche de fonctionnalité est fusionnée dans la branche de développement (après une revue et des modifications appropriées) et nous devons la rétablir ultérieurement (peut-être en raison de modifications des exigences). Si j'essaie de rétablir le commit de fusion en aval, cela ne me permettra pas de Push, car la branche est protégée. Je me souviens que GitHub avait fourni un bouton de retour lors de la fusion de la branche. Mais de toute façon, je ne suis pas en mesure de voir (ou de trouver) le bouton maintenant. Nous devions rétablir la priorité de la validation, nous avons donc retiré la protection de la branche en développement pour le moment et poussé la validation de la validation (le bidon le plus laid).

Existe-t-il une meilleure alternative pour annuler un commit depuis une branche protégée? Peut-être que certaines des fonctionnalités de GitHub me manquent ou sont mal comprises.

Un autre scénario est, si je supprime la branche de GitHub après ma fusion, comment puis-je la rétablir?

14
nak

Revenir sur GitHub

Vous n'avez pas besoin de restaurer (annuler la suppression) des branches sur GitHub pour annuler les validations de fusion résultant de demandes d'extraction. Par exemple:

Revertable pull request

Demande de traction non réversible

Parfois, le bouton de retour n'apparaît pas. À partir de l'aide de GitHub sur annulation d'une demande d'extraction :

Remarque: vous devrez peut-être utiliser Git pour rétablir manuellement les validations individuelles si:

  • L'annulation de la demande d'extraction entraîne des conflits de fusion
  • La demande d'extraction d'origine n'a pas été fusionnée à l'origine sur GitHub (par exemple, à l'aide d'une fusion à avance rapide sur la ligne de commande)

Il m'a fallu un certain temps pour trouver un exemple, mais si la branche principale n'a pas été fusionnée dans la branche de base à l'aide du gros bouton vert sur GitHub, elle ne peut pas être annulée sur GitHub:

Non-revertable pull request

git revert

Localement sur la ligne de commande, vous pouvez utiliser le git revert commande pour annuler les modifications.

Cela fonctionnera à la fois sur votre branche protégée et sur une branche en aval. git revert crée un nouveau commit en amont du HEAD] courant; il n'est donc pas nécessaire de forcer Push. Vous pouvez également créer manuellement une demande d'extraction pour les modifications annulées, à partir d'une branche en aval.

Revenir sur une validation de fusion est légèrement plus compliqué que revenir sur une validation monoparentale. Je vous conseillerais donc de jeter un œil à cette question pour plus d'informations, car je ne l'avais jamais fait auparavant.

Si les gens ne sont pas habitués à utiliser la ligne de commande, je pense que SourceTree a un élément dans le menu contextuel pour annuler un commit, mais je ne sais pas comment il gère les validations de fusion. Il pourrait y avoir des options similaires dans d'autres applications d'interface graphique.

J'espère que cela t'aides!

7
rink.attendant.6