Das Rückgängigmachen des letzten Git-Commits ist eine häufige Aufgabe für Entwickler, die Änderungen rückgängig machen oder Fehler korrigieren müssen. Git bietet mehrere Methoden, um das letzte Commit rückgängig zu machen, sodass Sie einen sauberen und genauen Projektverlauf aufrechterhalten können. Zu diesen Methoden gehören das Zurücksetzen, Rückgängigmachen oder Ändern von Commits, wobei jede Methode unterschiedlichen Zwecken dient, je nachdem, ob Sie die Änderungen beibehalten oder verwerfen möchten.
In dieser Anleitung wird anhand praktischer Beispiele gezeigt, wie Sie das letzte Git-Commit rückgängig machen. Wenn Sie diese Techniken beherrschen, können Sie Ihren Git-Verlauf effizient verwalten und sicherstellen, dass Ihr Projekt gut organisiert und fehlerfrei bleibt.
Git Commit verstehen
Bevor wir uns damit befassen, wie man ein Git-Commit rückgängig macht, ist es wichtig zu verstehen, was ein Commit in Git bedeutet. Ein Commit stellt eine Momentaufnahme Ihrer Arbeit zu einem bestimmten Zeitpunkt dar. Es fasst alle Änderungen zusammen, die Sie seit dem letzten Commit vorgenommen haben. Jedes Commit wird eindeutig durch einen SHA-1-Hash identifiziert, sodass Git einen Änderungsverlauf pflegen kann.
Ein Git-Commit rückgängig machen
Es gibt zwei grundlegende Techniken, um ein Git-Commit rückgängig zu machen: git reset und git revert. Wir werden jede Methode im Detail besprechen, einschließlich ihrer Anwendungsfälle und Auswirkungen.
git reset --soft HEAD~1
Verwenden von „git reset“
Der Befehl git reset ist ein leistungsstarkes Tool, mit dem Sie Ihren aktuellen HEAD in einen bestimmten Zustand verschieben oder „zurücksetzen“ können. So verwenden Sie ihn, um Ihr letztes Commit rückgängig zu machen:
git reset --soft HEAD~1
In diesem Befehl stellt –soft sicher, dass Ihre Änderungen im Staging-Bereich erhalten bleiben, und HEAD~1 bezieht sich auf das Commit vor dem aktuellen. Die Änderungen aus dem rückgängig gemachten Commit bleiben in Ihrem Arbeitsverzeichnis und im Staging-Bereich erhalten.
Hier ist eine Beispielausgabe:
Unstaged changes after reset:
M file1.txt
M file2.txt
Dies zeigt an, dass die Änderungen in file1.txt und file2.txt jetzt nicht mehr bereitgestellt sind.
Wenn Sie das Commit und alle damit verbundenen Änderungen vollständig verwerfen möchten, können Sie die Option –hard verwenden:
git reset --hard HEAD~1
Gehen Sie bei diesem Befehl vorsichtig vor, da er alle Änderungen seit dem letzten Commit dauerhaft verwirft.
Verwenden von „git revert“
Der Befehl git revert erstellt ein neues Commit, das die in einem vorherigen Commit vorgenommenen Änderungen rückgängig macht. Dies ist eine sichere Möglichkeit, Änderungen rückgängig zu machen, da der vorhandene Commit-Verlauf dadurch nicht verändert wird. So können Sie es verwenden:
git revert HEAD
Dieser Befehl erstellt ein neues Commit, das die im letzten Commit vorgenommenen Änderungen rückgängig macht.
Hier ist eine Beispielausgabe:
[master 0a9b2aa] Revert "Add new feature"
1 file changed, 1 insertion(+), 2 deletions(-)
Dies zeigt an, dass ein neues Commit erstellt wurde, das die Änderungen vom vorherigen Commit rückgängig macht.
Rückgängigmachen eines Git-Commits: Erweiterte Beispiele
Verwenden von „git reset“: Weitere Beispiele
Auf ein bestimmtes Commit zurücksetzen
Wenn Sie nicht nur das letzte Commit, sondern mehrere Commits rückgängig machen möchten, können Sie dies tun, indem Sie den Commit-Hash anstelle von angeben. HEAD~1
. Zum Beispiel:
git reset --soft 9fceb02
Dieser Befehl verschiebt den HEAD zum Commit, das durch den Hash 9fceb02 angegeben ist, und die Änderungen aller Commits nach 9fceb02 werden im Staging-Bereich gespeichert.
Zurücksetzen nicht bereitgestellter Änderungen
Wenn Sie Änderungen vorgenommen, aber noch nicht festgeschrieben haben und diese Änderungen rückgängig machen möchten, können Sie „git reset“ ohne Commit-Referenz verwenden:
git reset --hard
Dieser Befehl macht alle nicht bereitgestellten Änderungen rückgängig und setzt Ihr Arbeitsverzeichnis auf den Zustand des letzten Commits zurück.
Verwenden von git revert: Weitere Beispiele
Einen Bereich von Commits zurücksetzen
Wenn Sie einen Bereich von Commits rückgängig machen möchten, können Sie den Bereich mit dem Befehl git revert angeben. Beispiel:
git revert HEAD~3..HEAD
Dieser Befehl erstellt neue Commits, die die in den letzten drei Commits vorgenommenen Änderungen rückgängig machen.
Einen bestimmten Commit rückgängig machen
Wenn Sie ein bestimmtes Commit rückgängig machen möchten, das nicht das aktuellste ist, können Sie dies durch Angabe des Commit-Hashes tun:
git revert 9fceb02
Dieser Befehl erstellt ein neues Commit, das die im durch den Hash angegebenen Commit vorgenommenen Änderungen rückgängig macht 9fceb02
.
Abschluss
Git ist ein leistungsstarkes Tool und seine Komplexität kann für Anfänger entmutigend sein. Wenn Sie jedoch genau wissen, wie Sie ein Commit rückgängig machen, können Sie Git sicher navigieren. Ob Sie sich für git reset oder git revert entscheiden, hängt von Ihren spezifischen Anforderungen und den Auswirkungen der einzelnen Befehle ab. Denken Sie daran, dass der Schlüssel zur Beherrschung von Git Übung und Erkundung sind.