Jestem nowy w Mercurial. Po prostu nie mogę znaleźć odpowiedniego polecenia. Próbowałem aktualizacji / kasy bez powodzenia. Korzystam z lokalnego repozytorium. Dzięki
Jestem nowy w Mercurial. Po prostu nie mogę znaleźć odpowiedniego polecenia. Próbowałem aktualizacji / kasy bez powodzenia. Korzystam z lokalnego repozytorium. Dzięki
Odpowiedzi:
Myślę, że chcesz hg revert -r<rev> <file>
(spowoduje to zmianę tego pliku na taki, jaki był w danej wersji).
Jak powiedział djc, revert
zmienia plik w miejscu, aby pasował do poprzedniej wersji. Jeśli chcesz, aby nie było go na miejscu, możesz użyć hg cat -r revisionid filename
(oczywiście zastępując identyfikator rewizji i nazwę pliku), co spowoduje wyświetlenie pliku na stdout, odpowiednie do przekierowania w dowolne miejsce.
hg revert
rzeczywiście rozwiązuje ten problem. Ale myślę, że jesteś zdezorientowany w szerszym zakresie rzeczy niż zwykła odpowiedź na swoje pytanie i chcesz spróbować odpowiedzieć pełniej.
hg update
to polecenie dotyczące całego repozytorium i nie będzie działać na pojedynczych plikach. W ten sposób nie przypomina wywrotu svn update
. Jeśli tak hg --help update
, możesz zobaczyć, że tak jest, ponieważ polecenie nie przyjmuje argumentu plikowego. Można go użyć do przeniesienia całego repozytorium do określonej migawki, ale nie można go użyć do zrobienia tego tylko do jednego pliku.
Jeśli wpiszesz hg --help
, zobaczysz listę poleceń. Jest to dość obszerna i nieco zniechęcająca lista, ale jeśli ją przeczytasz, znajdziesz następującą linię:
revert restore individual files or directories to an earlier state
Teraz, jeśli chcesz tylko ostatni stan do celów porównawczych, istnieje inne polecenie, które może Cię zainteresować, i to jest hg cat
. Umożliwi to wydrukowanie zawartości pliku w dowolnej wersji. Następnie możesz przekierować jego wyjście do innego pliku. Następnie możesz mieć poprzednią znaną dobrą wersję pliku i starszą wersję do porównania obok siebie.
Powodem, dla którego Mercurial ma oddzielne update
polecenie, jest to, że w Mercurial można zrobić coś, co jest niemożliwe w Subversion. Możesz update
do wcześniejszej wersji, wprowadzić zmiany, a następnie zatwierdzić. Spowoduje to utworzenie gałęzi. update
Polecenie ma wpływ także zmiany rewizji nadrzędny bieżącego katalogu roboczego, a także zmieniając zawartość wszystkich plików w tym katalogu do wersji rodzic rewizji za.
Oznacza to, że revert
zmienia zawartość pliku (lub nawet całego repozytorium, jeśli podasz komendzie odpowiednie argumenty), ale pozostawia tę samą wersję nadrzędną bieżącej kopii roboczej.
Możesz znaleźć wersję nadrzędną (lub wersje w przypadku scalania) bieżącej kopii roboczej za pomocą hg parents
polecenia.
W wersjach Subversion zmiany są ściśle liniowe. Mercurial tworzy gałęzie w mgnieniu oka i prawie tak łatwo je scalić. Rewizje tworzą DAG, a nie ściśle liniową progresję.
Aby wyodrębnić określoną wersję określonego pliku, możesz to zrobić w systemie Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Tutaj 9 to numer wersji.
Albo jeszcze lepiej:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"