如何在Mercurial中恢复已删除的文件(如果有的话)?

Pur*_*lot 98 mercurial

无意中,通过使用GUI而不是CLI,我删除了Mercurial项目中的每个文件.

我恢复了Revert确定并失去了一些工作,因为我有时间机器我可以很容易地回来.但有没有一种方法可以取消删除/取消删除这些文件?通过手册和谷歌搜索,但看不到任何东西.有插件吗?

我可能在这里回答我自己的问题,但文件已从目录中消失,并没有在垃圾桶中恢复所以我假设删除是不可撤销的?

ps我知道hg forgethg remove -Af将删除而不删除目录,但我的问题与我做的错误有关,而不是冷静思考行动通过.

小智 150

First, use hg grep to find the deleted file you wish to recover. The output of this command will show you the last revision for which the file was present, and the path to the deleted file. Second, run hg revert -r <revision number> <path to deleted file> The deleted file will now be in your working copy, ready to be committed back into head.

  • 对我很好,谢谢.正在寻找"如何恢复我故意删除的文件?"的答案. (5认同)
  • 查找包含该文件的修订版的另一种方法是`hg log -I'**file.ext'` (3认同)
  • 只是一个FYI:您想要仍然拥有该文件的提交的修订号,**NOT**删除它的那个! (2认同)

mru*_*cci 8

评论引用:

我设置了一个存储库,提交了所有,已删除,然后再次提交

如果是这种情况,那么您只需将工作目录更新为以前的版本:

$ hg update -C -r-2
Run Code Online (Sandbox Code Playgroud)

请注意负修订号.如果您删除的文件不在以前的版本中,您可以使用以下命令找到它们:

$ hg log -v
Run Code Online (Sandbox Code Playgroud)


Pho*_*ixS 6

适用于 Mercurial 1.6 及更高版本

如果您知道删除文件的名称,则可以使用以下命令轻松找到其修订版本:

hg log -r "removes('NAME.c')"
Run Code Online (Sandbox Code Playgroud)

这将为您提供修订版本,删除名为 NAME.c(在根目录中)的文件。

然后您可以使用以下命令将文件恢复到以前的版本(与其他答案一样):

hg revert -r <revision number> <path to deleted file>
Run Code Online (Sandbox Code Playgroud)

您可以使用文件名模式来适应您所知道的内容,例如您可以使用它**/NAME.c在所有目录中进行搜索。您可以在文件名模式中阅读相关内容。并使用此链接了解新的转速规格


Shw*_*eta 5

这对我有用.

hg revert -r revision pathToTheFile
Run Code Online (Sandbox Code Playgroud)