我一直在致力于为客户更新大型代码库的大型项目。他们使用Mercurial作为他们的VCS。
和往常一样,我在项目开始时就从他们的master分支分支了。
作为项目的一部分,我删除了代码库各个部分中的250多个文件。随着项目的进行,这些删除(以及其他更改)已全部推送回远程存储库。
最近,我进行了一项更改,我决定自己不想这样做。我以为我会回到上一次提交,所以输入:
hg revert
我没有检查发生了什么事情(我知道这很愚蠢),所以我承诺并推动了事情。
我很震惊地看到,我在项目中删除的文件中有很大一部分(看似随机选择)已重新添加到我的分支中。浏览过去删除某些文件的提交,这些提交现在包含已删除的文件。
就好像我的整个历史记录中的一部分已经改变了,并且以一种我无法理解的方式改变了。
如此简单的命令如何使某些事情变得如此疯狂,我如何撤消这些更改?除了手动遍历代码库外,我找不到其他方法来删除所有这些文件……肯定不是最佳解决方案吗?
非常感谢您的帮助!
答案 0 :(得分:1)
来自hg revert --help
:
hg恢复[选项] ... [-r REV] [名称] ...
将文件恢复为签出状态
未指定任何修订,请还原指定的文件或目录 到他们在工作目录父目录中的内容。这个 将文件的内容还原到未修改的状态和计划 添加,删除,复制和重命名。
因为还原 不会更改工作目录的父母,这将导致这些 文件显示为已修改。
所以仅基于问题中的信息...似乎单独还原可能不会引起描述。
也许工作文件夹中已经有其他更改,或者合并被不正确地放弃,或者父级不是最新版本,而是更早的版本,这可以解释发生了什么。