Wie macht man in Git einen Fehler rückgängig?
In Git machen Sie einen Fehler mit restore, revert oder reset rückgängig, je nachdem, ob die Änderung ungespeichert, gespeichert oder schon geteilt ist. Wer den richtigen Weg wählt, verliert keine Arbeit.
In einer Rechnung steht plötzlich 1200 Euro statt 120 Euro. Das fällt erst nach dem Commit auf, und die Kollegin hat ihn vielleicht schon geholt.
Am Ende dieser Lektion
Notiz
Ich kann einen Fehler rückgängig machen, ohne Arbeit zu verlieren.
Schlüsselbegriffe
| Begriff | Was er bedeutet |
|---|---|
| restore | eine Datei auf den Stand des letzten Commits zurücksetzen |
| revert | einen neuen Commit machen, der einen früheren aufhebt |
| reset | den Branch auf einen früheren Commit zurückstellen |
| reflog | die Liste, wohin HEAD zuletzt zeigte |
| Geteilter Commit | ein Commit, den andere schon vom Remote geholt haben |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine ungespeicherte Änderung nehmen Sie mit restore zurück
Der einfachste Fall: Sie haben eine Datei geändert, aber noch nicht committet. git restore datei setzt sie auf den Stand des letzten Commits zurück. Die Änderung ist danach weg.
Sie legen zuerst ein Repository rechnung mit einem Commit an. Dann richten Sie absichtlich einen Fehler an und nehmen ihn zurück.
Ein Repository namens rechnung anlegen
git init -b main rechnungHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ihren Namen für diesen Ordner setzen
git -C rechnung config user.name "Studierende"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ihre Adresse für diesen Ordner setzen
git -C rechnung config user.email "[email protected]"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Einen Betrag von 120 Euro schreiben
printf 'Betrag 120\n' > rechnung/betrag.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datei vormerken
git -C rechnung add betrag.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den ersten Commit speichern
git -C rechnung commit -m "Rechnung angelegt"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Betrag aus Versehen auf 1200 setzen
sed -i 's/Betrag 120/Betrag 1200/' rechnung/betrag.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Status kurz ansehen
git -C rechnung status --shortHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datei auf den letzten Commit zurücksetzen
git -C rechnung restore betrag.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datei lesen
cat rechnung/betrag.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Einen geteilten Commit heben Sie mit revert auf
git revert schreibt keinen alten Commit um. Es macht einen neuen Commit, der die Wirkung eines früheren aufhebt. Der Verlauf bleibt wahr, und wer den alten Commit schon geholt hat, bekommt den neuen einfach dazu.
Deshalb ist revert der sichere Weg für alles, was andere schon haben. Sie setzen den Fehler jetzt in einen Commit und heben ihn auf.
Den falschen Betrag wieder eintragen
sed -i 's/Betrag 120/Betrag 1200/' rechnung/betrag.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Fehler als Commit speichern
git -C rechnung commit -am "Betrag falsch geaendert"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den letzten Commit mit einem neuen aufheben
git -C rechnung revert --no-edit HEADHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Nachrichten des Verlaufs lesen
git -C rechnung --no-pager log --format=%sHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Reset stellt zurück, reflog findet Commits
git reset schiebt den Branch auf einen früheren Commit. Mit --soft bleiben Ihre Änderungen vorgemerkt, mit --hard werden sie gelöscht. Nutzen Sie reset nur für Commits, die noch niemand hat.
Ging doch ein Commit verloren, hilft git reflog. Es listet auf, wohin HEAD zuletzt zeigte. Von dort bringt Sie ein Wechsel oder ein neuer Branch zum Commit zurück.
Welcher Weg passt zu welcher Lage?
| Lage | Befehl | Wirkung |
|---|---|---|
| Datei geändert, nicht committet | git restore datei | Datei wie im letzten Commit |
| Commit gemacht, noch nicht geteilt | git reset --soft HEAD~1 | Commit weg, Änderung bleibt vorgemerkt |
| Commit schon geteilt | git revert HEAD | Neuer Commit hebt ihn auf |
| Commit scheint verloren | git reflog | Zeigt, wohin HEAD zeigte |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Irrtum
Warnung
Viele glauben, reset --hard sei der normale Weg zum Zurücknehmen. Es löscht ungespeicherte Änderungen für immer. Nutzen Sie es nur, wenn Sie sicher sind, dass nichts darin Ihnen fehlen wird, und nie für Commits, die andere schon haben.