2012-04-24 7 views
23

Mam hipotetyczne repozytorium Mercurial na dysku. Jestem w trakcie tworzenia nowej funkcji, gdy zdaję sobie sprawę, że zrobiłem kompletny bałagan w pliku, nad którym pracuję i chcę przywrócić ten plik do ostatniego stanu zatwierdzenia.Jak mogę przywrócić plik do stanu "ostatni checkin" w Mercurial?

Mogę użyć hg update, aby odświeżyć kopię roboczą z repozytorium, ale to aktualizuje każdy plik.

Czy istnieje polecenie mercurial, które może aktualizować pojedynczy plik?

Odpowiedz

28

Istnieje polecenie rtęciowe do przywracania plików. hg revert powinno to odwrócić wszelkie zmiany. Możesz również przekazać mu nazwę pliku np. hg revert fileName.

3

Wierzę, że można wpisać hg revert /path/to/file/<file name>, a to po prostu zaktualizuje ten plik.

+1

Nie, to jest Git, że ma to dziwne zachowanie dla 'git checkout' (w Mercurial,' Hg Zamówienie 'jest aliasem dla' hg update'). –

+0

Masz rację, dziękuję za poprawienie mnie. – Kodi

+0

@Vari Czy Twoja odpowiedź jest nieprawidłowa? Jeśli tak, usuń. –

11

hg revert fileName spowoduje przywrócenie tego pliku do wersji, w której się znajdujesz. Jeśli chcesz przywrócić wszystkie zmiany, możesz uruchomić hg revert --all.

Oba te pliki będą tworzyły pliki fileName.orig, dzięki czemu można zachować zmiany, które chcesz przywrócić, na wszelki wypadek. Jeśli chcesz przywrócić plik, a nie mieć wszystkich plików .orig można dodać opcję -C: hg revert fileName -C hg revert --all -C

+0

Uważam, że lepiej jest dodać '* .orig' do mojego pliku' .hgignore', a następnie pozostawić pliki '.orig'. Może będę ich potrzebował pewnego dnia :) Jeśli ci przeszkadzają, możesz użyć rozszerzenia oczyszczania, aby je wyczyścić. –