Mercurial Hg恢复还原了旧文件

时间:2018-07-30 10:08:51

标签: mercurial revert

我一直在致力于为客户更新大型代码库的大型项目。他们使用Mercurial作为他们的VCS。

和往常一样,我在项目开始时就从他们的master分支分支了。

作为项目的一部分,我删除了代码库各个部分中的250多个文件。随着项目的进行,这些删除(以及其他更改)已全部推送回远程存储库。

最近,我进行了一项更改,我决定自己不想这样做。我以为我会回到上一次提交,所以输入:

hg revert

我没有检查发生了什么事情(我知道这很愚蠢),所以我承诺并推动了事情。

我很震惊地看到,我在项目中删除的文件中有很大一部分(看似随机选择)已重新添加到我的分支中。浏览过去删除某些文件的提交,这些提交现在包含已删除的文件。

就好像我的整个历史记录中的一部分已经改变了,并且以一种我无法理解的方式改变了。

如此简单的命令如何使某些事情变得如此疯狂,我如何撤消这些更改?除了手动遍历代码库外,我找不到其他方法来删除所有这些文件……肯定不是最佳解决方案吗?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

来自hg revert --help

  

hg恢复[选项] ... [-r REV] [名称] ...

     

将文件恢复为签出状态

     

未指定任何修订,请还原指定的文件或目录   到他们在工作目录父目录中的内容。这个   将文件的内容还原到未修改的状态和计划   添加,删除,复制和重命名。

     

因为还原   不会更改工作目录的父母,这将导致这些   文件显示为已修改。

所以仅基于问题中的信息...似乎单独还原可能不会引起描述。

也许工作文件夹中已经有其他更改,或者合并被不正确地放弃,或者父级不是最新版本,而是更早的版本,这可以解释发生了什么。