Menu
Coddy logo textTech

Git Reflog

Ostatnia aktualizacja

git reflog zapisuje każde miejsce, na które wskazywał HEAD: każdy commit, checkout, reset i rebase. Ponieważ Git przechowuje te commity jeszcze przez jakiś czas, nawet gdy znikną z twoich gałęzi, reflog jest twoją siatką bezpieczeństwa: pozwala znaleźć i odzyskać pracę, którą pozornie zniszczył reset --hard, nieudany rebase albo usunięcie gałęzi.

Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.

git reflog zapisuje każdą pozycję, w której był HEAD, więc commit utracony przez reset lub rebase można odnaleźć i przywrócić.

Składnia

PolecenieCo robi
git reflogPokazuje ostatnie pozycje HEAD z hashami
git reflog show <branch>Pokazuje reflog gałęzi
git reset --hard HEAD@{1}Cofa HEAD do poprzedniej pozycji
git branch recovered <hash>Odtwarza gałąź na utraconym commicie

Ratunek po pomyłce

Cofnij nieudany reset, odnajdując commit sprzed resetu.

KrokPolecenieWynik
1git reflogZnajdź commit sprzed resetu
2git reset --hard HEAD@{1}Przywróć do niego swoją gałąź

Najczęstsze pytania o git reflog

Czym jest git reflog?
To dziennik wszystkich miejsc, na które wskazywał HEAD (i koniec każdej gałęzi) w twoim lokalnym repozytorium: po commitach, checkoutach, resetach, scaleniach i rebase. W przeciwieństwie do git log, który podąża za przodkami commitów, reflog to chronologiczny zapis twoich działań i właśnie dlatego przydaje się do odzyskiwania.
Jak odzyskać commit po git reset --hard?
Uruchom git reflog, żeby znaleźć wpis commita, na którym była gałąź przed resetem (coś w rodzaju HEAD@{1}), a potem git reset --hard <that-hash> (albo HEAD@{1}), żeby do niego wrócić. Commit nie został naprawdę usunięty: po prostu żadna gałąź na niego nie wskazywała, a reflog wciąż zna jego hash.
Jak przywrócić usuniętą gałąź?
Znajdź ostatni commit gałęzi w git reflog, a potem odtwórz tam gałąź: git branch <name> <hash>. Dopóki usunięcie było niedawno (w granicach czasu wygasania reflogu, zwykle kilka tygodni), commity są w ten sposób nadal osiągalne.
Czy git reflog działa między klonami?
Nie: reflog jest lokalny dla twojego repozytorium i nie jest wypychany ani klonowany. Zapisuje tylko działania na twoim komputerze. Dlatego może uratować lokalne pomyłki, ale nie odzyska czegoś, co istniało wyłącznie w innym klonie.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git reflog w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia cofanie zmian i odzyskiwanie pracy.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ