Menu
Coddy logo textTech

Git Reset --hard

Zuletzt aktualisiert

git reset --hard verschiebt deinen Branch auf einen Ziel-Commit und zwingt sowohl den Staging-Bereich als auch dein Arbeitsverzeichnis, exakt damit übereinzustimmen - wobei jede nicht committete Änderung dabei verworfen wird. Es ist die destruktivste Form von git reset, also stelle sicher, dass du deine aktuelle Arbeit nicht mehr brauchst, bevor du es ausführst.

Aus Versehen einen Commit verworfen? Ein Hard Reset ist meist über git reflog wiederherstellbar. Probiere das gefahrlos im Terminal-Playground aus - eine echte Shell in deinem Browser.

git reset --hard setzt HEAD zurück und verwirft alles danach - Staging-Bereich und Arbeitsverzeichnis eingeschlossen.

Syntax

CommandWhat it does
git reset --hardVerwirft alle nicht committeten Änderungen (bleibt auf HEAD)
git reset --hard HEAD~1Entfernt den letzten Commit und seine Änderungen
git reset --hard <hash>Setzt den Branch zwangsweise auf einen bestimmten Commit zurück
git reset --hard origin/mainBringt den lokalen Branch exakt mit dem Remote in Übereinstimmung

Einen Hard Reset wiederherstellen

Committete Arbeit, die du per Reset verworfen hast, ist meist noch wiederherstellbar.

StepCommandResult
1git reflogListet auf, wo HEAD gewesen ist, mit Hashes
2git reset --hard <hash>Springt zurück zum Commit vor dem Reset

git reset --hard FAQ

Was macht git reset --hard eigentlich?
Es verschiebt deinen aktuellen Branch auf den Ziel-Commit und überschreibt sowohl den Staging-Bereich als auch dein Arbeitsverzeichnis, damit sie damit übereinstimmen. Alle nicht committeten Änderungen - ob gestaged oder nicht - werden verworfen. Im Vergleich zu --soft (das Änderungen gestaged behält) und --mixed (das sie ungestaged behält) ist --hard der einzige Modus, der die Änderungen wegwirft.
Wie verwerfe ich alle meine lokalen Änderungen?
Führe git reset --hard ohne Commit aus, um das Arbeitsverzeichnis auf den letzten Commit zurückzusetzen und nicht committete Bearbeitungen zu löschen. Um auch nicht verfolgte Dateien zu entfernen, die reset nicht anfasst, führe anschließend git clean -fd aus.
Wie setze ich meinen Branch so zurück, dass er mit dem Remote übereinstimmt?
Führe git fetch und dann git reset --hard origin/main aus (setze deinen Branch ein). Das zwingt deinen lokalen Branch, exakt mit dem Remote übereinzustimmen, und verwirft lokale Commits und Änderungen, die davon abweichen - nützlich, wenn dein lokaler Branch schiefgelaufen ist und du einfach die Version des Remote willst.
Kann ich ein git reset --hard rückgängig machen?
Committete Arbeit meist ja: Führe git reflog aus, um den Commit zu finden, auf den dein Branch vor dem Reset zeigte, dann git reset --hard <hash>, um dorthin zurückzukehren. Änderungen, die nie committet wurden (nur in deinem Arbeitsverzeichnis), können nicht wiederhergestellt werden, gehe also mit --hard vorsichtig um.
Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um git reset --hard in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt auch das Zurücksetzen und Rückgängigmachen von Änderungen Schritt für Schritt.
Coddy programming languages illustration

Lerne Git mit Coddy

LOS GEHT'S