git revert
Macht einen Commit durch einen neuen Commit rückgängig
Der Befehl 'git revert' macht einen früheren Commit rückgängig, indem er einen neuen Commit mit der gegenteiligen Änderung anlegt. Die Historie wird nicht umgeschrieben — der ursprüngliche Commit bleibt — daher ist das der sichere Weg für bereits gepushte und geteilte Commits. Haben spätere Commits dieselben Zeilen geändert, kann es Konflikte geben; löse sie, dann git revert --continue.
Syntax
git revert [--[no-]edit] [-n] [-m <parent-number>] <commit>...
git revert (--continue | --skip | --abort | --quit)Optionen
Die richtige Option wählen
revert oder reset
Zwei Wege, Commits rückgängig zu machen
| Befehl | Historie | Sicher nach dem Push? |
|---|---|---|
git revert <commit> | Fügt einen Rückgängig-Commit hinzu | Ja |
git reset --hard <commit> | Entfernt Commits vom Branch | Nein — braucht einen Force-Push |
Beispiele
Den letzten Commit rückgängig machen
git revert HEADErstellt einen Commit, der HEAD rückgängig macht.
Einen älteren Commit rückgängig machen
git revert a1b2c3dMacht diesen Commit rückgängig, spätere bleiben.
Einen Merge rückgängig machen
git revert -m 1 <merge-commit>Macht die Änderungen rückgängig, die ein Merge gebracht hat.
Workflow-Beispiele
git log --onelineDen Commit finden
git revert a1b2c3dDen Rückgängig-Commit erstellen
git pushTeilen — kein Force nötig
Fehlerbehebung
error: commit is a merge but no -m option was given
Ursache: Ein Merge hat zwei Eltern
Nutze git revert -m 1 <commit>
KONFLIKT beim Revert
Ursache: Spätere Commits haben dieselben Zeilen geändert
Korrigiere die Dateien, führe git add aus, dann git revert --continue (oder --abort)
Tipps & Stolperfallen
Best Practices
- ✓Geteilte Commits mit revert rückgängig machen; reset nur für lokale.
- ✓Erkläre im Revert-Text, warum.
- ✓Beim Rückgängigmachen mehrerer Commits den neuesten zuerst reverten.
Häufige Fehler
- ✗git reset statt git revert auf gepushte Commits anwenden und alle zwingen, ihre Historie zu reparieren.
- ✗Einen Merge ohne -m reverten.
- ✗Einen gerevertten Branch erneut mergen und sich wundern, warum seine Änderungen nicht zurückkommen — zuerst den Revert reverten.
FAQ
Nein. Es fügt einen neuen Commit hinzu; der ursprüngliche bleibt in der Historie.
Ja — das wendet die ursprüngliche Änderung erneut an.
git revert --abort.