修改mercurial中的重新基准后的本地承诺



一开始,我的本地repo看起来像:
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中的一个问题,但我相信有办法解决它。
请告诉我修改上次本地提交中的新更改的一组步骤。

看起来My1是一个合并,但您的图表根本没有突出显示这一点。你能用检查你的回购状态吗

hg log --graph

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

   hg commit --amend  File1.java

My1变更集在重定基础之前是合并变更集吗?rebase确实试图保留分支之间的父级数量(有关更多信息,请参阅rebase下的第10节)。

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

hg qimport -r tip
hg qrefresh 
hg qfinish -a

这会将tip变更集导入到修补程序队列中,然后更新该修补程序以将当前更改包括在工作目录中。最后,它将(现在已更新的)变更集移回回购中,准备就绪。

最新更新