wake-up-neo.net

Git Revert a Revert for a Merge

Ich habe einen Feature-Zweig erstellt, sagen wir mal feature/branch1 auf github. Ich habe eine Pull-Anfrage dafür erstellt und diese zusammengeführt.  Initial PR Merge Commit

Als es unsere Pipeline erreichte, dachten wir, dass es ein Problem gibt und wir haben es mit der Schaltfläche "Zurücksetzen" auf Git zurückgesetzt. Dadurch entstand eine "Zurücksetzen" -PR, die wir mit dem Master zusammengeführt haben und alles war in Ordnung.  Reverted Merge Commit

Nach ein paar Wochen posteten wir andere PRs, die mit dem Master zusammengeführt wurden, und dachten, wir würden revert-the-revert . Dieses Mal gingen wir in den Revert PR, der geschlossen wurde, und versuchten erneut, den Revert-Button zu verwenden. Aber wir haben diese Fehlermeldung bekommen

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.

Wie kann ich diese Wiederherstellung durchführen?

Die idealste Situation, die ich haben möchte, ist, einen neuen Zweig zu haben, der die Rückgängigmachung der Rückgängigmachung enthält, damit ich weitere Änderungen vornehmen und den PR-Prozess wiederholen kann.

7
Serendipity

Der Fehler, den Sie sehen, ist eine künstliche Überprüfung von Github, die ich persönlich nicht brauche. Sie können die Wiederherstellung dann lokal rückgängig machen:

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

Dies sollte erfolgreich sein, Modulo-Konflikte mit Änderungen seit dem Zurücksetzen.

PS: Eigentlich könnte der Fehler auf Konflikte zurückzuführen sein.

8
max630

Was Sie ausprobieren können, ist:

  • setze (git reset --hard old_commit) diesen PR-Zweig zu dem Commit, zu dem du zurückkehren möchtest (dem, das zurückgesetzt wurde)
  • push Push (git Push --force) diesen Zweig: Dadurch wird das PR aktualisiert

Auf diese Weise wird die PR erneut mit dem alten Commit ausgeführt.

Dies ist eine Zusammenführungsverpflichtung. Die PR ist bereits geschlossen und zusammengeführt.

Wenn Sie diesen alten PR-Zweig abgerufen haben, können Sie Folgendes tun:

  • ein git log darauf (git log Origin/old_pr_branch)
  • ein neuer Zweig aus dem alten SHA1-Commit, der den Inhalt darstellt, den Sie jetzt möchten

    git checkout -b new_pr_branch old_sha1
    
  • ein Push to Origin

    git Push -u Origin new_pr_branch

Sie können dann aus diesem neuen Zweig eine neue PR mit dem richtigen Inhalt erstellen.

1
VonC