【问题标题】:Mercurial hg revert brought back old filesMercurial hg revert 带回旧文件
【发布时间】:2019-01-06 13:34:35
【问题描述】:

我一直在从事一个大型项目,为客户更新大型代码库。他们使用 Mercurial 作为 VCS。

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

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

最近,我做了一个我决定不想要的更改。以为我会回到之前的提交,我输入:

hg revert

没有检查发生了什么(愚蠢,我知道),我承诺并推动。

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

就好像我整个历史的一部分被改变了,而且以我无法理解的方式。

这么简单的命令怎么会做出如此疯狂的事情,我该如何撤消这些更改?除了手动选择代码库之外,我找不到重新删除所有这些文件的方法......这肯定不是最好的解决方案吗?

帮助非常感谢!

【问题讨论】:

  • hg revertwork-tree 上运行并且没有参数,应该简单地将工作树文件设置回它们在当前检查时的方式 -出提交。所以不清楚这里到底发生了什么。
  • 我们能看到树吗? hg log -G 看到了什么?

标签: mercurial revert


【解决方案1】:

来自hg revert --help

hg revert [OPTION]... [-r REV] [NAME]...

将文件恢复到结帐状态

在没有指定修订的情况下,恢复指定的文件或目录 到他们在工作目录的父目录中的内容。这 将文件的内容恢复到未修改状态并取消计划 添加、删除、复制和重命名。

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

因此,仅根据问题中的信息...似乎单独恢复并不会导致所描述的内容。

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

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2012-04-10
    • 2012-12-18
    • 1970-01-01
    • 2017-11-12
    • 2012-11-25
    • 2011-05-07
    • 2012-01-01
    • 1970-01-01
    相关资源
    最近更新 更多