合并后无法推送到远程仓库

问题描述

分支出来 -
[default]$ hg branch talks
[talks]$ <... some commits ...>
[talks]$ hg update default
合并-
[default]$ hg merge talks
3 files updated,0 files merged,0 files removed,0 files unresolved
推送到远程仓库-
[default]$ hg commit -m \"merging talks to default\"
[default]$ $ hg push
abort: push creates new remote branches: talks!
(use \'hg push --new-branch\' to create new remote branches)
进一步的调查显示,远程存储库不希望我在远程端拥有多个头。但是我只是做了合并,将两个头合并为一个,不是吗?
hg serve
的图似乎也与我同意(我希望) 但是,我也从
hg heads
看到两个头
[default]$ hg branches
default                        9:85752ecd6326
talks                          8:2b00714d76d5 (inactive)
    

解决方法

        我猜您误解了分支功能。您刚刚创建了一个分支,该分支的名字将永远存在于存储库中。我怀疑您不是真的想要这样做。您可能想调查那些没有以永久存在于存储库中的名称结尾的本地分支的书签功能。 Mercurial拒绝将新的全局分支名称添加到要推送到的存储库中的推送,因为这实际上很少是您真正想要做的。
hg push --new-branch
会告诉Mercurial,是的,您确实要这么做。 您看到的两个脑袋有误导性。请注意一个头是如何被列为\'(不活动)\'。这仅表示这是全局分支上的最后更改,而不是实际负责人。您经常希望看到分支的头,即使这些头实际上有孩子而不是真正的头。 顺便说一句...我写了将该功能添加到\'heads \'命令的代码。 :-)     ,        解决方案在中止消息中:“ 7”。您已经创建了一个名为
talks
的命名分支,因此无论是否已将命名分支合并回默认值,它都需要进行此额外的切换。