【问题标题】:How can I roll back a single change in Mercurial?如何回滚 Mercurial 中的单个更改?
【发布时间】:2010-02-18 12:19:32
【问题描述】:

我对我想要回滚的 mercurial 项目中的一个文件进行了更改,但我想保留随后发生的一些更改:

Revision 1: Original
Revision 2: A change I made in error
Revision 3: A change I want to keep

我只想回滚第 2 版中的更改,保留第 1 版和第 3 版,并创建一个新的第 4 版。什么是最“善变”的做法?

请注意,是的,我可以从修订版 2 中提取反向差异并将其作为补丁应用到我的工作副本,然后提交。我知道。但我想找到该工具直接支持的某种方式。

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    我认为,如果您查看项目的变更日志(这样您就可以看到所有修订),您可以选择一个修订并使用 backout 命令撤消它。

    (我手头没有任何东西可以检查,所以可能不正确。)

    【讨论】:

      【解决方案2】:

      您也可以使用 mq 补丁来编辑您最近的历史记录。以下命令序列可以解决问题:

      hg qinit # 初始化一个队列 hg qimport -r2:TIP # 将修订版从 2 开始移到补丁管理中 hg qpop -a # 取消应用补丁,将您的实际结帐留在 r1 hg qrm 2.diff # 删除 r2 补丁(永远) hg qpush -a # 再次应用所有剩余的补丁(即 r3 补丁) hg qfinish -a # 将应用的补丁移回官方存储库历史记录

      这类事情非常适合修复本地存储库中的错误,但由于您要更改历史记录,请确保您没有推送给其他人(或者他们没有从你那里提取)原始版本,然后再修复它。

      如果我理解正确,hg backout 将改为提交一个新补丁,该补丁会反转之前的更改,从而将更改保留在您的历史记录中。这是一个更安全的选择,但如果你经常犯局部错误(比如我),那就不太好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多