Rebase in Git rückgängig machen

Azhar Bashir Khan 25 Dezember 2021
Rebase in Git rückgängig machen

In diesem Tutorial geht es um das Rückgängigmachen einer rebase, die in einem Branch in Git durchgeführt wurde.

Rebasing ist der Vorgang, bei dem die Basis eines Zweigs auf eine neuere Basis verschoben wird. Angenommen, wir haben einen Feature-Branch, der auf dem Haupt-Branch basiert. Dann hat der Hauptzweig einige neue Commits; Vielleicht möchten wir den Feature-Branch basierend auf diesen neuen umbasieren.

Wir können diese rebase-Operation überdenken. Wir wollen den neuen Feature-Branch nicht mehr auf den neuen Commits im master-Branch aufbauen.

Wir möchten, dass der Feature-Branch auf den Commits basiert, als wir ihn zum ersten Mal vom Haupt-Branch verzweigt haben. Um dies zu erreichen, müssen wir nun die Operation rebase rückgängig machen, die für die Verzweigung durchgeführt wurde.

Wir werden dies nun an einem Beispiel veranschaulichen.

Mit git reflog und git reset eine rebase rückgängig machen, die auf einem Branch in Git . gemacht wurde

Nehmen wir an, wir haben einen main-Zweig, und wir haben darüber einen neuen Zweig feature1 erstellt.

Und nehmen wir an, einige Commits sind im main-Zweig passiert. Wir haben eine rebase des neuen Branchs feature1 basierend auf diesen neuen Commits durchgeführt. Dies ist der Vorgang, den wir rückgängig machen möchten.

Um das rebase rückgängig zu machen, können wir den reflog-Befehl von Git verwenden. Mit git reflog können wir den Head-Commit des Branchs unmittelbar vor dem rebase-Start ermitteln.

Wir werden nun den Befehl git reflog auf dem Zweig feature1 ausführen (einer, auf dem rebase ausgeführt wurde)

$ git reflog

b745978 HEAD@{0}: rebase: that commit
4sd7c1c HEAD@{1}: rebase: this commit
adf3d3d HEAD@{2}: checkout: moving from main to feature1
...

Wir können sehen, dass HEAD@{2} der Commit kurz vor der rebase-Operation war.

Wir können git reset verwenden, um den Branch auf diesen Commit wie folgt zurückzusetzen.

$ git reset HEAD@{2} --hard

Nach Ausführung des obigen Befehls befindet sich der Branch feaure1 nun in einem Zustand kurz vor dem rebase.

Alternativ kann man ein rebase auch mit git reset wie folgt rückgängig machen.

$ git reset --hard ORIG_HEAD

Der ORIG_HEAD wird durch Befehle erzeugt, die Ihren HEAD drastisch bewegen, um die Position des HEAD vor deren Betätigung aufzuzeichnen, sodass Sie die Spitze des Zweigs leicht wieder in den Zustand zurückversetzen können, bevor Sie sie ausführen.

Der Vorbehalt gegenüber diesem alternativen Ansatz besteht darin, dass nach dem unerwünschten rebase keine anderen Operationen durchgeführt werden sollten, die den ORIG_HEAD-Viz ändern könnten. reset, rebase oder merge.

Somit können wir mit diesen Methoden ein ungewolltes rebase auf einem Branch in Git rückgängig machen.

Verwandter Artikel - Git Rebase