Rückgängigmachen des letzten Git-Commits in einem lokalen Repository

John Wachira 15 Februar 2024
Rückgängigmachen des letzten Git-Commits in einem lokalen Repository

In diesem Artikel wird erläutert, wie wir den letzten Commit in Git rückgängig machen können. Dies ist praktisch, wenn wir die durch ein Commit eingeführten Änderungen entfernen möchten, bevor wir es in das Remote-Repository verschieben.

Lassen Sie uns gleich einsteigen.

Letztes Commit rückgängig machen, ohne Dateien in Git zu ändern

Wir werden die Dinge beginnen, indem wir diskutieren, wie wir einen Commit rückgängig machen können, während die vorherigen Änderungen an den Dateien vorgenommen werden. Dazu verwenden wir den Befehl git reset mit dem Argument -soft, um Git anzuweisen, den Inhalt unserer Datei beizubehalten.

$ git reset --soft HEAD~1

Der obige Befehl entfernt den letzten Commit auf unserem HEAD.

Schauen wir uns ein Beispiel an. Hier ist der Commit-Verlauf in unserem lokalen Repository.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) Added a new file named "file.txt"
* 3b641e0  Second commit
* 21ca1e7  Initial commit

Lassen Sie uns den Befehl git reset ausführen und seine Auswirkungen auf unser lokales Repo überprüfen.

git zurücksetzen

Die obige Ausgabe zeigt, dass sich unsere file.txt in unserem Index befindet, aber der Commit nicht vorhanden ist. Wir können Änderungen an der Datei vornehmen und sie erneut übertragen.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) (HEAD)
* 3b641e0  Second commit (HEAD~1)
* 21ca1e7  Initial commit (HEAD~2)

Unser Befehl $ git reset --soft HEAD~1 entfernt den letzten Commit. Wenn wir die letzten beiden Commits entfernen würden, hätten wir stattdessen $ git reset --soft HEAD~2 verwendet und so weiter.

Manchmal möchten wir vielleicht den Commit und die Dateien löschen. Wir verwenden den Befehl git reset mit der Option -hard, wie unten gezeigt.

$ git reset --hard HEAD~1

Der obige Befehl entfernt alle mit dem Commit verbundenen Änderungen aus unserem Index und Arbeitsverzeichnis.

Schauen wir uns ein Beispiel an. Hier ist ein Bild unserer Commit-Historie.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) Added a new file named "file.txt"
* 3b641e0  Second commit
* 21ca1e7  Initial commit

In diesem Szenario möchten wir den letzten Commit entfernen und die Änderungen beseitigen.

Wir rennen:

$ git reset --hard HEAD~1
HEAD is now at 3b641e0 Second commit

Lassen Sie uns den Befehl git status ausführen, um den Status unseres Repos zu überprüfen.

Git-Status

Die obige Ausgabe zeigt, dass Git die Dateien aus unserem Index und Arbeitsverzeichnis entfernt hat.

Möglicherweise müssen wir auch den letzten Commit rückgängig machen und Änderungen im Arbeitsverzeichnis, aber in unserem Index beibehalten. Dazu fügen wir die Option --mixed zu unserem Befehl git reset hinzu, wie unten gezeigt.

$ git reset --mixed HEAD~1

Schauen wir uns ein Beispiel an. Dies ist der aktuelle Stand unserer Commit-Historie.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) Added a new file named "file.txt"
* 3b641e0  Second commit
* 21ca1e7  Initial commit

Wir rennen:

$ git reset --mixed HEAD~1

Unsere Dateien sollten im Arbeitsverzeichnis sichtbar sein, aber nicht im Index. Lassen Sie uns dies mit dem Befehl git status bestätigen.

mit git status bestätigen

Wir können sehen, dass sich unsere file.txt unter nicht verfolgten Dateien befindet. Dies ist eine weitere Möglichkeit, einen Commit rückgängig zu machen, während Änderungen beibehalten werden.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Verwandter Artikel - Git Commit