2010-07-09 13 views
53

Podczas korzystania z Mercurial, jak cofnąć wszystkie zmiany w katalogu roboczym od czasu ostatniego zatwierdzenia? Wygląda na to, że będzie to prosta rzecz, ale ucieknie mi.Mercurial: jak cofasz zmiany?

Na przykład, powiedzmy, że mam 4 zatwierdzenia. Następnie wprowadzam pewne zmiany do mojego kodu. Wtedy stwierdzam, że moje zmiany są złe i po prostu chcę powrócić do stanu kodu przy moim ostatnim zatwierdzeniu. Tak więc, myślę, że powinienem zrobić:

hg update 4 

z 4 będącą wersją numer jeden mojego ostatniego zatwierdzenia. Ale Mercurial nie zmienia żadnego z plików w moim katalogu roboczym. Dlaczego nie?

Odpowiedz

80

hg revert załatwi sprawę.

Powróci do ostatniego zatwierdzenia.

--all spowoduje przywrócenie wszystkich plików.

Zobacz link do opisu strony Man.

hg update jest zwykle używany do odświeżania katalogu roboczego po pobraniu z innego repozytorium lub gałęzi wymiany. hg up myawesomebranch. Można go również użyć do przywrócenia określonej wersji. hg up -r 12.

+0

Kiedy to zrobiłem, widzę pliki .orig dla każdego z plików, które przywróciłem, gdy sprawdzam ze statusem hg. Jak sobie z tym poradzić? –

6

hg revert jest twoim przyjacielem:

hg revert --all 

hg update scala zmiany do bieżącej kopii roboczej z rewizji docelowego. Połączenie najnowszej wersji ze zmienionymi plikami (= aktualna kopia robocza) powoduje te same zmiany, które już masz, tj. Nic nie robi :-)

Jeśli chcesz przeczytać o Mercurial, poleciłbym bardzo świetny samouczek: Hg Init.

+0

pableu: jesteś dokładnie prawo o tym, jak 'aktualizacji hg 'działa, gdy masz zmiany w kopii roboczej: łączy je w wersję docelową. Kiedy już jesteś w tej wersji docelowej, nic się nie dzieje. Redagowałem odpowiedź, aby powiedzieć to w bardziej pewny sposób. –

16

Alternatywne rozwiązanie dla hg revert to hg update -C. Możesz odrzucić lokalne zmiany i zaktualizować do pewnej wersji za pomocą tego pojedynczego polecenia.

I zazwyczaj wolą wpisując hg up -C ponieważ jest krótsza niż hg revert --all --no-backup :)

1
hg revert --all 

a następnie

hg pull -u 

działa na mnie

Powiązane problemy