2011-07-22 20 views
103

Jak mogę przywrócić wszystkie moje pliki z kopii lokalnej do pewnego zatwierdzenia?git wróć do pewnego zatwierdzenia

commit 4a155e5b3b4548f5f8139b5210b9bb477fa549de 
Author: John Doe <[email protected]> 
Date: Thu Jul 21 20:51:38 2011 -0500 

To jest zobowiązanie, do którego chciałbym powrócić. jakakolwiek pomoc byłaby ratunkiem!

+0

@Will iamPursell - Dlaczego usunąłeś swoją odpowiedź? Twoja wydaje się najbardziej rozsądna. Po cofnięciu OP może popełnić i nacisnąć (to znaczy ma repozytorium robocze). Wszystkie poniższe odpowiedzi stawiają repo w stanie, w którym nic nie można z nim zrobić. – jww

Odpowiedz

166

git reset --hard 4a155e5 przeniesie głowę do tyłu, gdzie chcesz być. Mogą istnieć inne odniesienia przed tym czasem, które musisz usunąć, jeśli nie chcesz, aby cokolwiek wskazywało na historię, którą właśnie usunąłeś.

+0

Używam tego podejścia, ale co musisz zrobić, aby bezpiecznie móc dokonać commitowania na innej maszynie? (zamiast tego 'git pull -f origin master') –

+0

@ChristopheDeTroyer Nie podążam za twoim pytaniem. – Andy

+0

, więc to faktycznie zmienia historię? jeśli tak, muszę dodać go do mojej listy 'git rebase' i' git commit --amend' – the0ther

31

Można przywrócić wszystkie pliki w katalogu roboczym i indeksu przez wpisywanie po tym poleceniu

git reset --hard <SHAsum of your commit> 

Można również wpisać

git reset --hard HEAD #your current head point 

lub

git reset --hard HEAD^ #your previous head point 

Nadzieję, że to pomaga

+0

'revert' nie jest poprawnym poleceniem. 'revert' stosuje nowy commit, który cofa poprzednie zatwierdzenie. Nie wymaga opcji "--hard". –

+0

@Charles: Dlaczego to nie jest poprawne? to wymaga - trudnej opcji –

+2

Przeczytaj dokumentację, ['revert'] (http://www.kernel.org/pub/software/scm/git/docs/git-revert.html) cofa zmiany wprowadzone przez jedno zatwierdzenie, nie resetuje indeksu i drzewa roboczego _do_ określonego zatwierdzenia, którego szuka osoba pytająca. To właśnie robi "reset" (http://www.kernel.org/pub/software/scm/git/docs/git-reset.html). 'reset' przyjmuje opcję' --hard'. –

Powiązane problemy