Übersicht
git revert [-n] [-m <parent>] <commit>...
Beschreibung
Der git revert-Befehl erstellt einen neuen Commit, dessen Änderungen die Inverse eines früheren Commits sind. Anders als git reset schreibt er keine Historie um — er fügt einen neuen Commit hinzu, der einen oder mehrere alte rückgängig macht. Das macht Revert sicher zur Verwendung auf geteilten Branches: Mitwirkende sehen einen klaren "Undo"-Commit statt umgeschriebene Historie.
Um einen Merge-Commit zu revertieren, verwenden Sie -m 1 (oder die entsprechende Eltern-Nummer), um die "Mainline" anzugeben — den Elternteil, dessen Perspektive bewahrt werden soll. Mehrere Commits in einem einzigen Befehl zu revertieren wendet sie als Reihe neuer Commits an.
Im täglichen Einsatz integriert sich git revert eng mit Shell-Aliasen, Editor-Plugins und Continuous Integration. Power-User fügen oft Aliase hinzu, die Flags kombinieren, die sie immer übergeben, oder wickeln den Befehl in Skripte, die Teamkonventionen durchsetzen. Die Ausgabeformatierung kann über Git-Config angepasst werden — Pretty-Formate, Farbschemata und Pager-Verhalten sind alle einstellbar. Wenn etwas schiefgeht, ist der erste Diagnoseschritt üblicherweise, den Befehl erneut mit GIT_TRACE=1 in der Umgebung auszuführen, was die zugrunde liegenden Plumbing-Aufrufe offenlegt. Für ungewöhnliche Situationen öffnet die --help-Ausgabe (git revert --help) die vollständige Manpage mit Details zu jeder Option, einschließlich solcher, die in alltäglichen Workflows selten verwendet werden, aber für Debugging oder Skripting im großen Maßstab essentiell sind.
Zu verstehen, wie git revert mit dem Rest von Gits Datenmodell interagiert — der Objektdatenbank, dem Index, Refs und dem Working Tree — zahlt sich aus. Jeder Befehl operiert auf einer Teilmenge dieser Stücke, und zu wissen, welche er berührt, hilft Ergebnisse vorherzusagen und sich von Fehlern zu erholen. Das Lesen der offiziellen Git-Dokumentation neben praktischer Übung in einem Wegwerf-Repository ist der schnellste Weg, die Nuancen zu verinnerlichen. Die meisten Produktionsprobleme mit Git rühren von einer von drei Ursachen: überraschendem Standardverhalten, partiellen Netzwerkoperationen oder dem Umschreiben bereits geteilter Historie. Ein funktionierendes mentales Modell der Nebenwirkungen von git revert hilft, alle drei zu vermeiden.
Häufige Optionen
| Option | Beschreibung |
|---|---|
-n, --no-commit | Staged die inversen Änderungen ohne zu committen. |
-m <parent-number> | Mainline-Elternteil zum Revertieren eines Merges. |
--continue | Setzt nach Konfliktauflösung fort. |
--abort | Bricht einen laufenden Revert ab. |
--skip | Überspringt den aktuellen Commit und fährt fort. |
-e, --edit | Bearbeitet die Revert-Commit-Nachricht. |
Beispiele
git revert HEAD
# Den jüngsten Commit mit einem neuen Commit rückgängig machen
git revert abc123..def456
# Einen Bereich von Commits revertieren
git revert -m 1 merge-sha
# Einen Merge-Commit revertieren, Mainline behalten
git revert -n HEAD~2
# Eine Inverse stagen, ohne noch zu committen
Häufige Fehler
Einen Merge zu revertieren verhindert das künftige Re-Mergen desselben Branches, es sei denn, Sie revertieren auch den Revert. Planen Sie entsprechend, wenn Sie Feature-Merges revertieren. Konflikte während des Reverts erfordern --continue oder --abort, genau wie beim Rebase.
Verwandte Befehle
git reset, git restore, git cherry-pick, git log