Reflog
Reflog jest dziennikiem wszystkich zdarzeń zachodzących w naszym lokalnym repozytorium. Jest on także mechanizmem bezpieczeństwa git'a pozwalającym odtworzyć dowolne zdarzenie.
Na potrzeby demonstracji wykonaj następujące polecenia:
mkdir git-reflog
cd git-reflog
git init
touch a.txt
git add a.txt
git commit -m "A file."
touch b.txt
git add b.txt
git commit -m "B file."
Teraz sprawdź jak wygląda historia twojego lokalnego repozytorium:
git log
Zobacz jak wyglądała Twoja aktywność w repozytorium za pomocą polecenia:
git reflog
Usuń na stałe ostatni commit za pomocą polecenia
git reset --hard HEAD~1
Ponownie dokonaj sprawdzenia dziennika zdarzeń:
git reflog
Zwróć uwagę, że zdarzenie usuniętego przez Ciebie commitu posiada odwołanie HEAD@{n}. N w tym przypadku jest numerem zdarzenia w dzienniku, dzięki któremu możemy wykonać następujące polecenie:
git checkout HEAD@{N}
Powyższe polecenie przełączy nas na wskazany commit (który został "usunięty") dzięki czemu możemy kontynuować naszą pracę (po wyjściu ze stanu DETACHED).