web-dev-qa-db-fra.com

Git inverser une inversion pour une fusion

J'ai créé une branche, par exemple, feature/branch1 sur github . J'ai créé une demande d'extraction et l'a fusionnée.  Initial PR Merge Commit

Quand il a atteint notre pipeline, nous avons pensé qu'il y avait un problème et que nous l'avons récupéré en utilisant le bouton Revert sur Git Cela a créé un PR "Revert" que nous avons fusionné avec le maître et tout allait bien .  Reverted Merge Commit

Après quelques semaines, après la publication d’autres RP qui ont été fusionnés dans le maître, nous nous sommes dit que nous reviendrions revert-the-revert. Cette fois-ci, nous sommes allés dans le PR Revert qui était fermé et avons essayé d'utiliser le bouton Revert à nouveau. Mais nous avons eu ce message d'erreur

Sorry, this pull request couldn’t be reverted automatically. 
It may have already been reverted, or the content may have changed since it was merged.

Comment puis-je obtenir ce retour fait?

L’idéal serait d’avoir une nouvelle branche contenant le revert du revert pour pouvoir effectuer d’autres modifications et revenir en arrière dans le processus de représentation proportionnelle.

7
Serendipity

L'erreur que vous voyez est un contrôle artificiel de github, que je trouve personnellement inutile. Vous pouvez revenir en arrière localement puis:

git fetch Origin master
git checkout Origin/master (or reset)
git revert <REVERT HASH>
git Push Origin master

Cela devrait réussir, modulo est en conflit avec les modifications apportées depuis le retour.

PS: en fait, l'erreur pourrait être due aux conflits.

8
max630

Ce que vous pouvez essayer, c'est:

  • réinitialiser (git reset --hard old_commit) cette branche PR à la validation à laquelle vous souhaitez revenir (celle qui a été annulée)
  • force Push (git Push --force) cette branche: qui mettra à jour le PR

De cette façon, le PR est refait avec l'ancien commit.

Ceci est un commit de fusion. Le PR est déjà fermé et fusionné.

Dans ce cas, si vous avez récupéré cette ancienne branche PR, vous pouvez faire:

  • un git log dessus (git log Origin/old_pr_branch)
  • une nouvelle branche de l'ancien SHA1 commit représentant le contenu que vous souhaitez maintenant

    git checkout -b new_pr_branch old_sha1
    
  • une poussée à l'origine

    git Push -u Origin new_pr_branch

Vous pouvez ensuite créer un nouveau PR à partir de cette nouvelle branche, avec le bon contenu.

1
VonC