Chciałem wyczyścić katalog roboczy niektórych niezatwierdzonych plików, ale przypadkowo uruchomiłem git reset --hard
.Git commit lost po resecie --hard. Nie znaleziono go przez fsck, nie w reflogu
Uświadomiłem sobie, że utraciłem poprzednie (niezapchnięte) zatwierdzenie, więc uruchomiłem git reset --hard ORIG_HEAD
. To nie doprowadziło mnie do mojego straconego zobowiązania.
Uruchomiłem git reflog
, ale zatwierdzenie nie było tam wymienione. Zrobiłem też git fsck --lost-found
, ale na liście nie było żadnych zatwierdzeń, tylko kilka niepowiązanych obiektów typu blob i drzew.
Ponieważ nie mogę znaleźć żadnego odniesienia do utraconego zatwierdzenia (z wyjątkiem .git/COMMIT_EDITMSG
, który wciąż zawiera odpowiedni komunikat zatwierdzenia i listę zmian), nie jestem pewien, jak odzyskać zatwierdzenie.
Czy istnieje sposób na odzyskanie utraconego zwrotu lub czy powinienem przygotować się na wszystko?
Dlaczego sądzisz, że masz zatwierdzenie git dla swoich lokalnych zmian? reset git nie utraciłby go. Jeśli masz tylko niezatwierdzone zmiany, te zniknęły. – fche
'git reset --hard' bez argumentu commit-toh jest równoważne' git reset --hard HEAD', który nie utraci zatwierdzeń, nie będzie pchnięty ani nie będzie się unosił. To po prostu zresetuje indeks i katalog roboczy z powrotem do stanu ostatniego zatwierdzenia, które zostały zrobione, tracąc zmiany etapowe i niezarządzane (ale jeszcze nie zatwierdzone). "Reset git - hard ORIG_HEAD" prawdopodobnie będzie problemem, w zależności od tego, jakie dokładnie było ostatnie polecenie, które faktycznie zaktualizowało ORIG_HEAD, i jak dawno temu było i co zrobiłeś pomiędzy ... – twalberg
Dzięki, utracony commit został wykonany około pół godziny przed "git reset --hard". –