在Mercurial中存在未完成的本地更改时,撤消对单个文件的早期更改

时间:2012-09-13 20:28:24

标签: mercurial

每当我正在进行本地更改时,我会意识到我想要撤消先前修订版中从特定文件中所做的更改,而我正处于一组更改中。例如:

  • r1000 - 更改文件A和B
  • ... - 任意数量的中间变更
  • 工作副本:对多个文件的未完成更改

此时,我意识到我想彻底撤消对r1000中文件A的更改,作为我正在进行的更改的一部分。

如果我没有任何本地更改,我可以使用hg backout。我尝试过使用hg revert -r "1000^" A,但收到的消息是A不受父变更集1000的影响。

那么,作为我当前更改的一部分,从先前变更集中的单个文件恢复更改的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

因此,当我写这篇文章时,我遇到--reverse命令上的hg diff标志。对于问题中的示例,将该想法与hg import相结合,可以得到如下命令:

hg diff -c 1000 -I A --reverse | hg import --no-commit --force -

这会为单个目标文件创建r1000更改的反向修补程序,然后将其传递给hg import以应用于当前工作目录而不提交。