2012-03-16 40 views
21

Ở một số giai đoạn trong quá khứ, tôi đã có một "foo.txt" nằm dưới sự kiểm soát nguồn Mercurial. Tuy nhiên nó đã bị xóa.Cách xác định và khôi phục tệp đã xóa

Làm cách nào để khôi phục tệp khi tôi không biết bản sửa đổi Mercurial cuối cùng mà tệp đã bị xóa?

+0

Xem thêm [Tìm tệp đã xóa trong lịch sử lưu trữ Mercurial, nhanh chóng?] (Https://stackoverflow.com/questions/1013550/find-deleted-files-in-mercurial-repository-history-quickly) để biết thêm về định vị nó. –

Trả lời

22

Nếu bạn biết đường dẫn chính xác cho các tập tin, bạn có thể làm một cái gì đó như:

hg log -l 1 path/to/foo.txt 

này sẽ cho bạn thấy changeset cuối cùng nơi foo.txt đã được sửa đổi, vì vậy bạn sẽ có thể để khôi phục lại các tập tin từ này sửa đổi.

Một khi bạn đã sửa đổi ngay, bạn chỉ có thể làm:

hg revert -r <my revision> path/to/foo.txt 
hg commit -m "add the foo.txt file again" 
+2

Tôi không thể nhận lệnh nhật ký của bạn hoạt động. Nó sẽ không hiển thị sửa đổi mà xóa đã xảy ra. Tôi đã phải làm 'hg log -l 1 - đường dẫn đến/foo.txt'. –

9

Sử dụng revsets:

hg log -r "removes('path_to_file')" 

đâu path_to_file có thể bất cứ điều gì ghi lại trong hg help patterns, trong đó có một con đường chính xác, một glob hoặc một biểu thức chính quy.

Chỉnh sửa: Kết hợp nhận xét của Brian về việc đặt path_to_file trong dấu nháy đơn.

+2

Điều này làm việc cho tôi nếu tôi đặt 'path_to_file' trong dấu nháy đơn. –

Các vấn đề liên quan