2012-03-16 98 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