Jak mogę cofnąć płatność w Git?

137

Właśnie pobrałem wcześniejsze zatwierdzenie z mojego lokalnego repozytorium git. Nie wprowadzałem żadnych zmian, po prostu na to patrzyłem. Teraz chcę wrócić do mojego ostatniego zatwierdzenia - jak to zrobić?

Dokładne polecenie, którego użyłem, aby to sprawdzić:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

Teraz, kiedy piszę git log, na górze widzę to wyewidencjonowane zatwierdzenie, ale żadne z moich późniejszych zatwierdzeń. Czy przypadkowo je usunąłem?

Yuval Karmi
źródło
Myślę, że widzisz to w niewłaściwy sposób: my kasy do oddziałów (głowic), nie popełnia indywidualnie
Bernardo Dal Corno

Odpowiedzi:

187

Spróbuj najpierw tego:

git checkout master

(Jeśli jesteś w innym oddziale niż master, użyj zamiast tego nazwy oddziału).

Jeśli to nie zadziała, spróbuj ...

Dla pojedynczego pliku:

git checkout HEAD /path/to/file

Dla całej kopii roboczej repozytorium:

git reset --hard HEAD

A jeśli to nie zadziała, możesz spojrzeć w reflog, aby znaleźć swój stary head SHA i zresetować do tego:

git reflog
git reset --hard <sha from reflog>

HEAD to nazwa, która zawsze wskazuje na najnowsze zatwierdzenie w Twojej bieżącej gałęzi.

Bursztyn
źródło
ale jak mogę zobaczyć moje zatwierdzenia, aby zdecydować, który hash SHA1 go nadać?
Yuval Karmi
1
Nie - HEADpiszesz dosłownie. Git już wie, co HEADto znaczy. Jednakże, jeśli naprawdę, naprawdę chcesz nadać mu SHA1, możesz użyć git logdo spojrzenia na dziennik zatwierdzeń.
Amber
kiedy uruchamiam git reset --hard HEAD, przenosi mnie z powrotem do tego wyrejestrowanego zatwierdzenia ... Opublikuję dokładne polecenie, którego użyłem do sprawdzenia.
Yuval Karmi
(Jeśli jesteś ciekawy, możesz wpisać git rev-parse HEADi zobaczyć, że daje ci SHA1 odpowiadający twojemu najnowszemu zatwierdzeniu.)
Amber
Dodałem dwie nowe opcje powyżej, wypróbuj je (po kolei - wypróbuj najpierw wersję do kasy).
Amber
63

Aby cofnąć git checkoutzrobić git checkout -, podobnie jak cdi cd -w skorupkach.

Gaylord Thankyou Johnson
źródło
16

Prawdopodobnie chcesz git checkout master, lub git checkout [branchname].

wuputah
źródło