Zu einem vorherigen Commit im Repository in Git zurückkehren
-
Verwenden von
git reset
zum Zurücksetzen auf einen vorherigen Commit im Git-Repository -
Verwendung von
git revert
zum Zurücksetzen auf einen vorherigen Commit im Git-Repository
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 -
Verwandter Artikel - Git Reset
- Eine Git-Zusammenführung mit Konflikten rückgängig machen
- Machen Sie den Development-Branch mit dem Master-Branch identisch
- Unterschied zwischen den Git-Befehlen `Reset`, `Revert` und `Checkout`.
- Unterschied zwischen Git RM --Cached und Git Reset File
- Verschiedene Methoden zum Entfernen lokaler Git-Änderungen
- Änderungen in Git rückgängig machen