snippets · bash
Ich habe einen Branch oder Commit verloren – ist er wirklich weg?
Nach einem reset, Rebase oder gelöschten Branch zeigt git log den gesuchten Commit nicht mehr. Das fühlt sich an wie Datenverlust.
Das Problem
git log zeigt Commits, die über die gerade betrachteten Referenzen erreichbar sind. Ein Commit kann trotzdem noch lokal existieren, obwohl kein Branch mehr darauf zeigt.
Erster Check
git reflog --date=local
Der Reflog protokolliert, wohin lokale Referenzen wie HEAD gezeigt haben. Suche nach dem Zustand unmittelbar vor dem Fehlgriff.
Wenn du einen plausiblen Hash gefunden hast, nicht sofort resetten. Erst einen Rettungsbranch anlegen:
git branch recovery/<name> <COMMIT>
git log --oneline --decorate recovery/<name> -10
Damit bekommt der Commit wieder eine normale Referenz und du kannst in Ruhe prüfen, ob es der richtige Zustand ist.
Was der Reflog nicht kann
Uncommittete Änderungen sind etwas anderes. Wenn Daten nie committed, gestasht oder anderweitig gespeichert wurden, kann ein Reflog sie nicht magisch rekonstruieren.
Warum dieser Weg sicherer ist
Ein neuer Branch verändert weder Working Tree noch aktuellen Branch. Erst wenn du weißt, was du gerettet hast, entscheidest du über Merge, Cherry-Pick oder Reset.
Quelle: https://git-scm.com/docs/git-reflog