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

时间:2011-06-12 16:23:11

标签: mercurial merge push

分支 -

[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的图表似乎也同意我(我希望) enter image description here

但是,我也看到hg heads

的两位负责人
[default]$ hg branches
default                        9:85752ecd6326
talks                          8:2b00714d76d5 (inactive)

2 个答案:

答案 0 :(得分:2)

解决方案在中止消息中:use 'hg push --new-branch'。您创建了一个名为talks的命名分支,因此它需要这个额外的开关,无论您是否已将命名分支合并回默认值。

答案 1 :(得分:1)

我猜你误解了分支功能。您刚刚创建了一个名称将永久存在于存储库中的分支。我怀疑你真的不想这样做。您可能希望调查本地分支的书签功能,这些分支最终没有存储在存储库中的名称。

Mercurial balks at push将新的全局分支名称添加到被推送到的存储库中,因为很少你真正想做的事情。 hg push --new-branch会告诉Mercurial,是的,你的意思是这样做。

你看到的两个头是误导。注意一个头如何被列为'(非活动)'。这只是意味着它是全球分支上的最后一次变化,而不是真正的头脑。你经常想要看到树枝的头部,即使这些头实际上有孩子而且不是真正的头。

作为一个小小的旁边......我写了一段代码,将这个功能添加到'heads'命令一段时间。 : - )