Menu
Coddy logo textTech

Git Reset

Zuletzt aktualisiert

git reset verschiebt den aktuellen Branch auf einen anderen Commit und aktualisiert je nach Modus die Staging-Area (Index) und den Arbeitsbaum entsprechend. Die drei Modi unterscheiden sich nur darin, wie weit diese Aktualisierung reicht: --soft verschiebt den Branch und stoppt, --mixed (die Voreinstellung) setzt auch die Staging-Area zurück, und --hard überschreibt zusätzlich deine Arbeitsdateien.

Da --hard nicht committete Arbeit verwirft, solltest du wissen, welchen Modus du willst, bevor du ihn ausführst. Probiere diese Befehle sicher im Terminal-Playground aus - eine echte Shell in deinem Browser.

Die drei Modi

ModeMoves branchResets stagingResets working tree
--softJaNeinNein
--mixed (default)JaJaNein
--hardJaJaJa

Syntax

CommandWhat it does
git reset --soft HEAD~1Letzten Commit rückgängig machen, Änderungen gestaged lassen
git reset HEAD~1Letzten Commit rückgängig machen, Änderungen ungestaged lassen
git reset --hard HEAD~1Letzten Commit rückgängig machen, Änderungen verwerfen
git reset <file>Eine Datei unstagen (ihre Änderungen behalten)
git reset --hard origin/mainLokalen Branch erzwingen, dem Remote zu entsprechen

Häufige Fälle

GoalCommand
Alles unstagengit reset
Eine Datei unstagengit reset README.md
3 Commits zurückgehen, die Arbeit behaltengit reset --soft HEAD~3
Alle lokalen Änderungen seit einem Commit verwerfengit reset --hard <hash>

Git reset FAQ

Was ist der Unterschied zwischen --soft, --mixed und --hard?
Alle drei verschieben deinen Branch-Zeiger auf den Ziel-Commit; sie unterscheiden sich darin, was sie sonst noch anfassen. --soft ändert nichts weiter, deine Änderungen bleiben also gestaged. --mixed (die Voreinstellung) leert zusätzlich die Staging-Area, sodass die Änderungen ungestaged werden, aber in deinen Dateien bleiben. --hard überschreibt zusätzlich deinen Arbeitsbaum, damit er dem Ziel-Commit entspricht, und verwirft nicht committete Änderungen.
Wie stage ich eine Datei mit git reset aus?
Führe git reset <file> aus (zum Beispiel git reset README.md), oder git reset ohne Pfad, um alles zu unstagen. Das entfernt die Datei aus der Staging-Area, behält aber deine Bearbeitungen im Arbeitsbaum. In neueren Git-Versionen kannst du auch git restore --staged <file> verwenden, was dasselbe expliziter erledigt.
Ist git reset --hard umkehrbar?
Nicht vom Arbeitsbaum aus - --hard verwirft nicht committete Änderungen dauerhaft. Committete Arbeit, die du weggeresettet hast, kann jedoch meist wiederhergestellt werden: Führe git reflog aus, um den Hash des Commits zu finden, dann git reset --hard <hash> (oder erstelle dort einen Branch). Nicht committete Änderungen, die nie gestaged oder committet wurden, können nicht wiederhergestellt werden, also verwende --hard mit Vorsicht.
Was ist der Unterschied zwischen git reset und git revert?
git reset schreibt die Historie um, indem es den Branch zurücksetzt - in Ordnung für lokale Commits, aber gefährlich bei Commits, die du bereits gepusht hast. git revert lässt die Historie unangetastet und fügt einen neuen Commit hinzu, der einen früheren rückgängig macht, was die sichere Wahl für geteilte Branches ist.
Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um git reset in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt ebenfalls das Zurücksetzen und Rückgängigmachen von Änderungen Schritt für Schritt.
Coddy programming languages illustration

Lerne Git mit Coddy

LOS GEHT'S