首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Mercurial中恢复已删除的文件(如果有)?

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

Stack Overflow用户
提问于 2010-02-01 16:28:12
回答 9查看 51.4K关注 0票数 103

偶然地,通过使用GUI而不是CLI,我删除了Mercurial项目中的每个文件。

我恢复了正常,并失去了一些工作,因为我有时间机器,我可以很容易地恢复。但是有没有一种方法可以取消删除这些文件呢?翻遍了手册,用谷歌搜索了一下,但什么也看不到。有什么插件吗?

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

附注:我知道hg forgethg remove -Af会在不从目录中删除的情况下删除,但我的问题与我犯的错误有关,而不是冷静地思考操作。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-07-04 18:54:15

首先,使用hg grep查找要恢复的已删除文件。此命令的输出将显示该文件所在的最后修订版本,以及已删除文件的路径。其次,运行hg revert -r <revision number> <path to deleted file>删除的文件现在将在您的工作副本中,准备提交回head。

票数 154
EN

Stack Overflow用户

发布于 2010-02-03 01:32:38

评论中的引用:

我设置了一个存储库,全部提交,然后删除,然后再次提交

如果是这样的话,您只需要将工作目录更新到以前的版本:

代码语言:javascript
复制
$ hg update -C -r-2

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

代码语言:javascript
复制
$ hg log -v
票数 8
EN

Stack Overflow用户

发布于 2014-06-05 17:37:50

适用于Mercurial 1.6及更高版本的

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

代码语言:javascript
复制
hg log -r "removes('NAME.c')"

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

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

代码语言:javascript
复制
hg revert -r <revision number> <path to deleted file>

您可以使用文件名模式来适应您所知道的内容,例如,您可以使用**/NAME.c在所有目录中进行搜索。你可以在File Name Patters上读到有关它的内容。并使用此链接了解新的revset specifications

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2175427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档