2012-03-16 100 views
21

在過去的某個階段,我有一個「foo.txt」,它在Mercurial源代碼控制下。但它現在已被刪除。如何找到並恢復已刪除的文件

當我不知道文件被刪除的最後一個Mercurial修訂版時,如何恢復文件?

+0

請參閱[在Mercurial存儲庫歷史記錄中快速查找已刪除的文件?](https://stackoverflow.com/questions/1013550/find-deleted-files-in-mercurial-repository-history-quickly)瞭解更多關於定位它。 – 2016-10-06 19:46:47

回答

22

如果知道該文件的確切路徑,你可以這樣做:

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

這將顯示您最後變更其中foo.txt進行了修改,這樣你就可以從這個恢復的文件修訂。

一旦你有正確的版本,你可以簡單地做:

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

我無法讓你的日誌命令工作。它不會顯示刪除發生在哪個版本。我必須做'hg log -l 1 --removed path/to/foo.txt'。 – 2013-09-01 19:06:00

9

使用revsets:

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

哪裏path_to_file可以是任何東西在hg help patterns記錄,包括精確的路徑,水珠或一個正則表達式。

編輯:引入的布萊恩的關於把path_to_file在單引號評論。

+2

這適用於我,如果我把'path_to_file'放在單引號中。 – 2013-09-01 19:12:19