Letzten Git-Commit rückgängig machen
Die Blöcke sind verschiedene Fälle, kein Gesamtskript. Wähle den passenden Fall. Branchnamen, Pfade und VERIFIED_COMMIT vor Nutzung ersetzen. Abbruchbefehle gelten nur für ihre laufende Operation; nicht beide Alternativen ausführen.
Kurzantwort
Reset --soft bewegt den Branch zum Elterncommit und erhält Index sowie Arbeitsdateien, wenn du einen lokalen letzten Commit ohne Inhaltsverlust auflösen willst. Revert ergänzt für einen geteilten Commit eine umkehrende Änderung. Entscheide zuerst, ob du den Code behalten willst und wer den Verlauf bereits hat.
Beispiel und Voraussetzungen
Das Beispiel hat einen gewöhnlichen Commit ohne Merge und mit Elterncommit an der Spitze, sauberes Arbeitsverzeichnis und keine fremden Indexänderungen. Der erste Commit hat kein HEAD^; ein Merge mehrere Eltern. Beides passt nicht. Graph prüfen, statt HEAD~1 als universelles Undo zu behandeln.
Vor Änderungen prüfen
Patch, Status und Teilungszustand lesen. Commit auflösen und Code weiterbearbeiten, veröffentlichten Code umkehren oder alles verwerfen sind verschiedene Ziele. Geteilte Umschreibungen abstimmen. Neuer Zeitstempel oder eigener Autorenname beweist keinen privaten Commit.
git status --short
git log -3 --oneline --decorate
git show --stat HEADReferenz oder getrennten Checkout behalten
Rescue/before-undo an HEAD hält den committeten Originalzustand. Uncommittete Dateien separat sichern; der Branch enthält sie nicht. Im sauberen Beispiel legt Soft Reset nur diesen Patch in den Index. Ein bereits geänderter Index kann Aufgaben vermischen und braucht eigene Prüfung.
git branch rescue/before-undo HEAD
SCHOOL_UNDO=$(git rev-parse HEAD)Erster Ablauf
Für lokale Änderungen behalten reset --soft HEAD^ ausführen und diff --cached prüfen. Inhalt bleibt für einen neuen Commit im Index und Arbeitsverzeichnis. Mixed Reset behandelt den Index anders. Nicht allein für einen kürzeren Status --hard wählen: Es verändert auch Arbeitsdateien.
git reset --soft HEAD^
git diff --cached
git status --shortAnderes Ergebnis bewusst wählen
Für einen geteilten gewöhnlichen Commit die geprüfte ID in SCHOOL_UNDO halten und revert nutzen. Der neue Commit invertiert die Änderung und bewahrt empfangenen Verlauf. Vor normalem Push Ergebnis und Projekttests prüfen. Ein Merge braucht bewusste Mainline-Elternwahl und Verständnis späterer Merges; eigenes Verfahren verwenden.
git revert "$SCHOOL_UNDO"Grenzen und Ausnahmen
Revert kann mit späterer Arbeit kollidieren. Status lesen, lösen, stagen und revert --continue nutzen. Bei falscher Auswahl revert --abort. Soft Reset hat keinen entsprechenden Fortsetzungs-/Abbruchzustand. Abläufe nicht mischen und keinen zweiten Reparaturvorgang während eines aktiven Reverts starten.
git status
git revert --abortKonflikte und Aufräumen
Auch committeten Code und lokale Dateien verwerfen ist eine weitere destruktive Entscheidung. Zustand vorher sichern. Uncommittete Arbeit ist nicht im Reflog. Bei aktivierten Restore Points und erkannten lokalen Änderungen kann FluxGit vor einem unterstützten Hard Reset einen Safety Stash speichern; dieses Terminal ruft den Schutz nicht auf.
Ergebnis prüfen
Nach Soft Reset Spitze und Indexpatch mit der Rettungsreferenz vergleichen. Nach Revert prüfen, dass nur gewolltes Verhalten umgekehrt und spätere Arbeit erhalten bleibt. Projekttests ausführen, Rettung während Prüfung behalten. Ein fehlerfrei beendeter Git-Befehl beweist keinen korrekten Code.
git log -4 --oneline --decorate
git status --short
git diff --cachedHäufige Fragen
Löscht Soft Reset Dateien? Nein, Arbeitsverzeichnis und Index bleiben, die Referenz bewegt sich. Entfernt Revert das Original? Nein, neuer Gegencommit. Rettet Reflog alles? Nein, es betrifft vorhandene lokale Referenzzustände und Commit-Objekte, keine beliebigen ungespeicherten Dateiinhalte.
Operation in FluxGit prüfen
Prüfe die Operation und die betreffenden Commits mit FluxGits visuellem Verlauf und Patchansicht. Behalte die Prüfungen für Branch, geteilten Verlauf und lokale Dateien aus diesem Beispiel bei. Die Downloadseite zeigt die aktuell verfügbaren Builds und Plattformen.