Nach dem Arbeitsstand entscheiden
| Situation | Befehl | Ergebnis |
|---|---|---|
| Datei aus dem Index nehmen | git restore --staged -- file.txt | Behält die Änderungen in der Arbeitskopie. |
| Letzten lokalen Commit entfernen, Index behalten | git reset --soft HEAD~1 | Setzt den Branch einen Commit zurück. |
| Geteilten Commit rückgängig machen | git revert <commit> | Erzeugt einen neuen, umkehrenden Commit. |
Prüfe git status und git log --oneline -5. Dieses Reset-Beispiel benötigt einen Eltern-Commit und einen privaten Branch. Bei einem Merge-Commit ist eine separate Prüfung nötig; wähle den Hauptelternteil nicht auf Verdacht.
Reset in einem Übungsrepository testen
Verwende ein neues, leeres Verzeichnis außerhalb deines Projekts. Die Übung erzeugt zwei Commits, entfernt den zweiten aus dem Branch-Verlauf und behält seine Änderung im Index.
git init -b main
git config user.name "DevSheet Demo"
git config user.email "demo@example.invalid"
printf "one\n" > note.txt
git add note.txt
git commit -m "First note"
printf "two\n" >> note.txt
git commit -am "Second line"
git reset --soft HEAD~1
git status --short
git diff --cachedErwartet: M note.txt im Kurzstatus und eine hinzugefügte Zeile two im Index-Diff. Die Datei enthält weiterhin beide Zeilen.
Änderungsverlust vermeiden
git reset --hard kann nicht committete Änderungen verwerfen und störende unversionierte Pfade überschreiben. Die Übung benötigt diesen Befehl nicht.
git restore -- file.txt ersetzt Änderungen außerhalb des Index; --staged betrifft den Index. Wurde ein Branch versehentlich verschoben, prüfe git reflog und erstelle einen Rettungsbranch am verifizierten früheren Commit. Reflog rettet nicht jede uncommittete Änderung.