1

昨晚我开始合并;并忘记提交。

后来我对工作副本进行了一些更改。

今天我不再想要那个合并(因为我将在更新的版本上合并),但我想保留本地工作更改。这些更改独立于任何合并解决方案。

如何在中止当前合并时保留(和/或稍后重新应用)本地更改?


shelve不允许在本地更改上使用:

$ hg shelve foo/bar
abort: cannot shelve while merging

使用hg up -C“中止合并”的正常方法将消除本地更改。


这不像如何在不影响工作目录的情况下“合并”?因为合并已经开始,只是没有提交。涉及首先完成提交,然后选择更改的答案是合适的,如果可以简单地显示,尽管问题集中在“没有提交的情况下中止”。

4

1 回答 1

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.

我们在这里使用了一个秘密提交,这样如果你忘记剥离它(或者如果你打算在之后保留它),它就不会意外地被推送。

如果您使用的是 Evolution 扩展,hg prune -r tipis 优先于hg strip -r tip --keep,因为它仍然保留临时提交(隐藏),以防您以后需要参考它。

于 2016-05-23T13:43:37.713 回答