昨晚我开始合并;并忘了承诺。
后来我对工作副本进行了一些更改。
今天我根本不再需要合并(因为我将在更新版本上合并),但我想保留本地工作更改。这些更改与任何合并解决方案无关。
如何在中止当前合并时保留(和/或稍后重新应用)本地更改?
不允许在本地更改上使用shelve
:
$ hg shelve foo/bar
abort: cannot shelve while merging
使用hg up -C
,“中止合并”的正常方法将消除本地更改。
这与How to 'hg merge' without affecting the working directory?不同,因为合并已经开始,只是没有提交。如果问题可以简单地显示,那么涉及首先完成提交然后选择更改的答案是合适的,尽管问题 关注的是“在没有提交的情况下中止”。
答案 0 :(得分:3)
最简单的解决方案可能是在秘密提交中临时记录更改,然后恢复到该提交,例如:
hg resolve -m -a # mark all files as resolved
hg commit -s -m "Savepoint." # Temporary commit.
hg update .^ # Back to original revision.
# (Use ".^" in cmd.exe on Windows.)
hg revert -r tip --all # Revert files to saved commit.
hg diff # Verify that you've got all the changes.
hg strip -r tip --keep # And discard the temporary commit.
我们在这里使用秘密提交,以便在您忘记剥离它时不会意外地被推送(或者如果您打算在之后保留它)。
如果您正在使用evolve扩展,则hg prune -r tip
优先于hg strip -r tip --keep
,因为它仍会保留临时提交(隐藏)以防您以后需要引用它。 / p>