Tôi là người mới đến Mercurial. Chỉ không thể tìm thấy lệnh phù hợp. Đã cố gắng cập nhật / kiểm tra mà không có may mắn. Tôi đang sử dụng kho lưu trữ cục bộ. Cảm ơn
Tôi là người mới đến Mercurial. Chỉ không thể tìm thấy lệnh phù hợp. Đã cố gắng cập nhật / kiểm tra mà không có may mắn. Tôi đang sử dụng kho lưu trữ cục bộ. Cảm ơn
Câu trả lời:
Tôi nghĩ bạn muốn hg revert -r<rev> <file>
(điều này sẽ thay đổi tệp đó thành như ở bản sửa đổi đã cho).
Như djc đã nói revert
thay đổi một tệp tại chỗ để phù hợp với bản sửa đổi trước. Nếu bạn không muốn nó ở đúng vị trí, bạn có thể sử dụng hg cat -r revisionid filename
(tất nhiên là thay thế revisionid và tên tệp) sẽ xuất tệp ra stdout, phù hợp để chuyển hướng bất kỳ nơi nào bạn muốn.
hg revert
thực sự giải quyết vấn đề này. Nhưng tôi nghĩ rằng bạn đang bối rối về nhiều thứ hơn là chỉ đơn giản là câu trả lời cho câu hỏi của bạn và muốn cố gắng trả lời đầy đủ hơn.
hg update
là một lệnh toàn bộ kho lưu trữ và sẽ không hoạt động trên các tệp riêng lẻ. Nó không giống như sự lật đổ svn update
theo cách này. Nếu bạn làm vậy, hg --help update
bạn có thể thấy rằng trường hợp này xảy ra vì lệnh không có đối số tệp. Nó có thể được sử dụng để di chuyển toàn bộ kho lưu trữ của bạn đến một ảnh chụp nhanh cụ thể, nhưng không thể được sử dụng để làm điều đó chỉ với một tệp.
Nếu bạn nhập, hg --help
bạn sẽ thấy một danh sách các lệnh. Đó là một danh sách khá lớn và hơi khó khăn, nhưng nếu bạn đọc qua nó, bạn sẽ thấy dòng này:
revert restore individual files or directories to an earlier state
Bây giờ, nếu bạn chỉ muốn trạng thái cuối cùng cho mục đích so sánh, có một lệnh khác mà bạn có thể quan tâm, và đó là hg cat
. Điều đó sẽ cho phép bạn in ra nội dung của tệp ở bất kỳ bản sửa đổi cụ thể nào. Sau đó, bạn có thể chuyển hướng đầu ra của nó thành một số tệp khác. Sau đó, bạn có thể có phiên bản tốt đã biết trước đó của tệp của mình và phiên bản cũ để so sánh song song.
Lý do tại sao Mercurial có một update
lệnh riêng biệt là nó có thể làm điều gì đó trong Mercurial mà không thể trong Subversion. Bạn có thể update
chuyển sang phiên bản cũ hơn, thực hiện thay đổi, sau đó cam kết. Điều này sẽ tạo ra một nhánh. Cácupdate
lệnh có tác dụng cũng thay đổi phiên bản mẹ của thư mục làm việc hiện tại cũng như thay đổi nội dung của tất cả các tập tin trong thư mục đó với các phiên bản mà phiên bản của cha mẹ.
Điều đó có nghĩa là revert
thay đổi nội dung của tệp (hoặc thậm chí toàn bộ kho lưu trữ nếu bạn cung cấp cho lệnh các đối số phù hợp) nhưng vẫn giữ nguyên bản sửa đổi gốc của bản sao làm việc hiện tại.
Bạn có thể tìm ra bản sửa đổi chính (hoặc các bản sửa đổi trong trường hợp hợp nhất) của bản sao làm việc hiện tại bằng cách sử dụng hg parents
lệnh.
Trong các phiên bản Subversion là một tiến trình tuyến tính nghiêm ngặt. Mercurial tạo ra các nhánh khi chiếc mũ rơi xuống và chúng gần như dễ dàng hợp nhất. Các sửa đổi tạo thành một DAG, không phải là một tiến trình tuyến tính nghiêm ngặt.
Để trích xuất một bản sửa đổi cụ thể của một tệp cụ thể, bạn có thể thực hiện việc này trên Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Ở đây, 9 là số sửa đổi.
Hoặc thậm chí tốt hơn:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"