2016-05-24 19 views
145

Przez pomyłkę wykonałem git add . i git commit w oddziale develop. Ale na szczęście nie zrobiłem git push.Jak cofnąć ostatnie zatwierdzenie w git

Dlatego chciałem przywrócić oryginalny stan.

Próbowałem git reset --soft i git reset HEAD --hard, ale wygląda na to, że go pomieszałem.

Jak to naprawić? Chcę wrócić do pierwotnego stanu i ewentualnie zachować zmiany w kodzie.

Odpowiedz

374

Chyba nie zawiedli jeszcze. Spróbuj:

git reset HEAD^ 

To przyniesie dir do stanu przed dokonaniu zatwierdzenia, HEAD^ oznacza rodzic obecny commit (jeden nie chcesz już), zachowując zmiany z nim (Unstaged).

+45

plus jeden dla ** jeszcze ** –

+5

To może być duplikat, ale to jest zbyt uproszczoną odpowiedzią, której potrzebuję w 90% przypadków. Dziękuję – geneorama

+0

Ty, panie/pani, jesteś zbawicielem! – Amal

72

Spróbuj po prostu zresetować ostatni popełnić

git reset --soft HEAD~1 
+1

'fatal: niejednoznaczny argument 'HEAD ~ 1': nieznana wersja lub ścieżka nie znajduje się w drzewie roboczym. Użyj "-", aby oddzielić ścieżki od wersji " – Green

+0

Spróbuj użyć git bash. Jeśli używasz systemu Windows, konsola nie będzie działać z jakiegoś powodu, nie wiesz dlaczego. Git bash nie działa. – Fred

+0

@Green Windows nie lubi 'HEAD ~ 1', zawijanie go w cudzysłów typu' git reset --soft "HEAD ~ 1" ' – user568458

Powiązane problemy