1

一开始,我的本地
C1 -> C2 -> My1
仓库看起来像: 远程仓库看起来像:
C1 -> C2 -> R1 -> R2
所以我做了:
$ hg pull
$ hg rebase
现在仓库看起来像:
C1 -> C2 -> R1 -> R2 -> My1

现在我对文件“File1.java”做了一些更改,并希望这些更改成为最后一次提交的一部分My1。当我执行以下操作时:
$ hg commit File1.java --amend
我收到的错误消息是:
abort: cannot amend merge changesets
在谷歌搜索时我发现了这个,据此它看起来像是 mercurial 中的一个问题,但我确信有办法解决它。
请告诉我在上次本地提交中修改新更改的一组步骤。

4

2 回答 2

2

看起来 My1 是一个合并,但您的图表根本没有突出显示。您可以通过以下方式检查您的回购状态:

hg log --graph

如果 My1 是一个合并(并且您希望它是合并的)。Mercurial 2.6 应该能够编辑合并变更集。因此,如果您升级到 Mercurial 2.6.1 或更高版本,您的原始命令将起作用。

   hg commit --amend  File1.java
于 2013-06-24T23:17:45.640 回答
0

在变My1基之前,变更集是合并变更集吗?rebase 确实尝试保留分支之间的父级数量(您可以在rebase下查看第 10 节以获取更多信息)。

假设你没有推送你的变更集(即它仍然有一个draft使用阶段hg phase)并且你愿意使用 hg 的补丁扩展mq,你可以这样做:

hg qimport -r tip
hg qrefresh 
hg qfinish -a

tip会将变更集导入补丁队列,然后更新该补丁以包含工作目录中的当前更改。最后,它将(现已更新的)变更集移回存储库,准备就绪。

于 2013-06-24T19:37:41.833 回答