git reflog als Rettungsanker
- Matt
Ich hatte einen Branch weggeworfen, den ich noch brauchte - git branch -D war schneller als der Gedanke daran, ob der Commit noch woanders lag. Weder git log noch git branch -a zeigten danach noch etwas davon.
Gerettet hat mich git reflog. Es protokolliert jede Bewegung von HEAD, unabhaengig davon, ob dazu noch ein Branch existiert. Jede Zeile bekommt eine Kurzform wie HEAD@{3}, und damit komme ich mit git checkout HEAD@{3} oder git reset --hard HEAD@{3} zurueck, auch auf Commits, die zu keinem Branch mehr gehoeren.
Der Haken: Eintraege verschwinden irgendwann. Erreichbare halten sich 90 Tage, unerreichbare nur 30, danach raeumt git gc auf. Wer den Verlust erst nach Wochen bemerkt, hat unter Umstaenden Pech. Und reflog ist rein lokal - ein frisch geklontes Repository bringt keins mit, anders als bei git bisect, das direkt auf der Commit-Historie arbeitet.