git revert

Grundlegende Snapshots

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)
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (1)

Öffnet keinen Editor; behält die Standardnachricht "Revert …".

EmpfohlenDie Standard-Revert-Nachricht passt meistens

Beispiel

git revert --no-edit HEAD

Fortgeschritten (1)

Wendet die gegenteiligen Änderungen auf Arbeitsverzeichnis und Staging-Bereich an, ohne zu committen.

Bei BedarfMehrere Reverts in einem Commit bündeln

Beispiel

git revert -n HEAD HEAD~1

Erfahren (1)

Bei einem Merge-Commit: die Nummer des Elternteils (meist 1), dessen Seite erhalten bleibt.

Bei BedarfDie einzige Möglichkeit, einen Merge-Commit zu reverten

Beispiel

git revert -m 1 HEAD

Die richtige Option wählen

revert oder reset

Zwei Wege, Commits rückgängig zu machen

BefehlHistorieSicher nach dem Push?
git revert <commit>Fügt einen Rückgängig-Commit hinzuJa
git reset --hard <commit>Entfernt Commits vom BranchNein — braucht einen Force-Push

Beispiele

Den letzten Commit rückgängig machen

git revert HEAD

Erstellt einen Commit, der HEAD rückgängig macht.


Einen älteren Commit rückgängig machen

git revert a1b2c3d

Macht 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

1
git log --oneline

Den Commit finden

2
git revert a1b2c3d

Den Rückgängig-Commit erstellen

3
git push

Teilen — 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

A:

Nein. Es fügt einen neuen Commit hinzu; der ursprüngliche bleibt in der Historie.

A:

Ja — das wendet die ursprüngliche Änderung erneut an.

A:

git revert --abort.