Zu einem vorherigen Commit im Repository in Git zurückkehren

Azhar Bashir Khan 30 Januar 2023
  1. Verwenden von git reset zum Zurücksetzen auf einen vorherigen Commit im Git-Repository
  2. Verwendung von git revert zum Zurücksetzen auf einen vorherigen Commit im Git-Repository
Zu einem vorherigen Commit im Repository in Git zurückkehren

In diesem Tutorial lernen wir, wie man zu einem früheren Commit im Repository in Git zurückkehrt.

Git, ein Versionskontrollsystem, wird in einer kollaborativen Entwicklungsumgebung verwendet, um die an den Dateien vorgenommenen Änderungen zu verfolgen.

Git wird verwendet, um die Snapshots der Änderungen der Dateien in einem Projektverzeichnis zu erfassen und sie mit Commits zu verknüpfen.

In Git kann man mit Commits den Verlauf der an Dateien vorgenommenen Änderungen durchsuchen und anzeigen.

Wir können Git auch verwenden, um die Dateien des Projektverzeichnisses im Git-Repository auf einen früheren Commit zurückzusetzen (d. h. den Zustand der Dateien im Verzeichnis, als der Commit erstellt wurde).

Wir werden dies nun an einem Beispiel veranschaulichen.

Verwenden von git reset zum Zurücksetzen auf einen vorherigen Commit im Git-Repository

In einer kollaborativen Entwicklungsumgebung verwenden wir Git, um die Änderungen zu verfolgen, die an Dateien im Projektverzeichnis in einem Git-Repository vorgenommen wurden.

Wenn wir ein Commit erstellen, um unsere Arbeit zu speichern, erstellt Git eine eindeutige ID (auch bekannt als SHA oder Hash), die es uns ermöglicht, Aufzeichnungen über die spezifischen Änderungen zu führen, die festgeschrieben wurden, zusammen mit dem, wer sie wann vorgenommen hat.

Ein Commit ist eine individuelle Änderung an einer Datei (oder einem Satz von Dateien). Die Commits enthalten normalerweise eine Commit-Nachricht, die eine kurze Beschreibung der vorgenommenen Änderungen darstellt.

Manchmal müssen wir möglicherweise das Repository des Projektverzeichnisses auf einen früheren Commit zurücksetzen oder zurücksetzen.

Angenommen, wir haben die folgenden Commits, wie durch den Befehl git log in unserem Repository gezeigt.

$ git log --oneline
e4cd6b4 (HEAD -> main, origin/main) my change
99541ed second change
41f1f2a first change
...

Angenommen, wir möchten unser Repository auf den vorherigen Commit zurücksetzen, der von SHA 41f1f2a mit dem Kommentar first change angegeben wurde.

Eine Möglichkeit, dies zu tun, besteht darin, mit dem Befehl git checkout vorübergehend zum vorherigen Commit zu wechseln.

Daher würden wir wie folgt vorgehen.

$ git checkout 41f1f2a

Wir können auch einen neuen Branch mit dem vorherigen Commit erstellen, sodass wir die neuen Änderungen daran in diesem Branch committen können.

Daher würden wir wie folgt vorgehen.

$ git checkout -b first-change-branch 41f1f2a

Wenn wir die Änderungen seit dem letzten Commit verwerfen möchten, würden wir stattdessen den Befehl git reset verwenden.

Die Syntax des Befehls git reset zum Zurücksetzen des Repositorys auf einen früheren Commit lautet git reset -hard <commit-sha-id>.

In unserem Fall würden wir also wie folgt vorgehen.

$ git reset --hard 41f1f2a

Bitte beachten Sie, dass Sie dies mit Vorsicht verwenden sollten; Dadurch werden auch alle lokalen Änderungen verworfen. Alle nicht festgeschriebenen Änderungen gehen verloren.

Alternativ können wir die Änderungen vor dem Zurücksetzen wie folgt speichern.

$ git stash
$ git reset --hard 41f1f2a
$ git stash pop

Nach Ausführung der obigen Befehle werden die lokalen Änderungen im Stash gespeichert; und dann, nach dem Zurücksetzen auf den vorherigen Commit, werden diese Änderungen erneut auf das Repository angewendet.

Verwendung von git revert zum Zurücksetzen auf einen vorherigen Commit im Git-Repository

Der Befehl git revert wird verwendet, wenn wir den Verlauf des Repositorys behalten möchten.

Beim Ausführen des Befehls git revert erstellt Git einen Commit mit dem Reverse-Patch, um den vorherigen Commit zu annullieren. Auf diese Weise schreiben wir keine Geschichte um.

Die Syntax des Befehls git revert zum Zurücksetzen des Repositorys auf einen früheren Commit lautet: git reset <commit-sha-id1> <commit-sha-id2> ....

Daher möchten wir die ersten beiden Commits zurücksetzen, um das Repository auf das von SHA 41f1f2a angegebene Commit zurückzusetzen.

$ git revert e4cd6b4 99541ed

Es wird das Repository durch die angegebenen zwei Commits zurücksetzen.

Wir können den Befehl git revert auch wie folgt ausführen.

$ git revert HEAD~2..HEAD

Der obige Befehl git revert würde die letzten beiden Commits rückgängig machen.

Schließlich erstellt der Befehl git revert, wie bereits erwähnt, einen Commit, um den vorherigen Commit aufzuheben. Daher müssten wir diesen Commit jetzt speichern.

Wir müssen wie folgt vorgehen.

$ git commit -m "reverted commits e4cd6b4 99541ed"

Somit wird nun die Rückgängigmachung der Commits im Repository als neuer Commit gespeichert.

In einigen Fällen ist ein Merge-Commit vorhanden, und wir möchten es möglicherweise auch rückgängig machen.

Wir können den Befehl git revert mit der Option -m parent-number verwenden; Diese Option gibt die übergeordnete Nummer (beginnend mit 1) der Hauptlinie an und ermöglicht es, die Änderung relativ zu der angegebenen übergeordneten Linie rückgängig zu machen.

Der Merge-Commit hat mehrere Eltern. Der Befehl git revert benötigt zusätzliche Informationen, um zu entscheiden, welcher Elternteil der Zusammenführung als Hauptlinie betrachtet werden soll.

Die Syntax des Befehls lautet: git revert -m 1 <commit-sha-id>, die 1 wird für den ersten Elternteil als Hauptzeile verwendet.

Angenommen, der Commit-SHA e4cd6b4 ist ein Merge-Commit. Dann können wir wie folgt vorgehen.

$ git revert -m 1 e4cd6b4

Daher haben wir ausgearbeitet, wie Sie in Git zu einem früheren Commit im Repository zurückkehren können.

Für weitere Informationen, besuchen Sie bitte -

  1. git-reset
  2. git-revert

Verwandter Artikel - Git Reset

Verwandter Artikel - Git Revert