2011-01-22 22 views
7

Powiedzmy, mój obecny dziennik git jestzobacz wszystkie historia git

commit3

commit2

commit1

zresetować głowę do commit2.

Teraz chcę wrócić do commit3, ale zapomnę SHA-1 z commit3, więc zajrzeć do dziennika, ale „dziennika git” pokaże tylko commit2, commit1, moje pytanie jest jak zresetować, aby zatwierdzić3, lub pozwolić, aby dziennik wyświetlał również commit3?

Dzięki

Odpowiedz

10

Użyj git reflog, aby znaleźć stare odniesienie i przekaż je bezpośrednio do git log. Zauważ, że reflog jest czyszczone okresowo, a stare zatwierdzenia zostaną ostatecznie usunięte, chyba że są częścią gałęzi - jeśli chcesz cofnąć zatwierdzenie, ale pozostawić je w historii, użyj git revert, aby je cofnąć, nie usuwając ich z historii.

+0

Lub, jeśli to niepublikowane, wystarczy utworzyć inny gałąź przy zobowiązaniu do zachowania. – Cascabel

4

Komenda

git reflog 

pokaże listę agentów kondycji, które były głowy. Innymi słowy, pokazuje listę zatwierdzeń w kolejności, w której zostały one wyrejestrowane. Na tej liście zobaczysz także składnię: [email protected]{1}, [email protected]{2} itd. Jest to sposób na adresowanie poprzednich HEAD.

Wasz przypadek git checkout [email protected]{1} powinien sprawdzić commit3, ponieważ był to HEAD przed bieżącym HEAD.

0

Istnieją dwa sposoby: - ​​

Classic: git reflog

Big Picture :) dziennika git --graph --decorate --oneline