Możesz zobaczyć wiszące zatwierdzenia git log -g
.
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
Więc możesz to zrobić, aby znaleźć konkretny ciąg znaków w wiszącym komunikacie zatwierdzenia:
git log -g --grep=search_for_this
Alternatywnie, jeśli chcesz wyszukać zmiany dla określonego ciągu, możesz użyć opcji wyszukiwania kilofu, „-S”:
git log -g -Ssearch_for_this
# this also works but may be slower, it only shows text-added results
git grep search_for_this $(git log -g --pretty=format:%h)
Git 1.7.4 doda opcję -G , umożliwiając przekazanie -G <regexp>, aby dowiedzieć się, kiedy została przeniesiona linia zawierająca <regexp>, czego nie można zrobić -S. -S powie ci tylko, kiedy zmieni się łączna liczba wierszy zawierających ciąg znaków (tj. Dodanie / usunięcie ciągu).
Na koniec możesz użyć gitk do wizualizacji wiszących zatwierdzeń za pomocą:
gitk --all $(git log -g --pretty=format:%h)
Następnie użyj jego funkcji wyszukiwania, aby znaleźć zgubiony plik. Wszystkie te prace zakładają, że brakujące zatwierdzenie nie „wygasło” i zostało wyrzucone do pamięci, co może się zdarzyć, jeśli zwisają przez 30 dni i wygasają ponowne rejestrowania lub uruchamiane jest polecenie, które je wygasa.