Mercurial中的分支和远程磁头

时间:2010-04-07 09:29:00

标签: mercurial branch

我使用此命令创建了一个新分支: hg branch new_branch

首次提交新分支后,默认分支变为非活动状态。如果这被推送,则中央存储库将只有一个属于新分支的头。

当我的同事在默认分支上推送他的提交时,他会收到此错误:

pushing to ssh://...
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)

迫使推动有什么不好吗?为什么遥控头不好?

如何在不同的分支机构上远程工作并推送到一个存储库?

2 个答案:

答案 0 :(得分:18)

远程负责人很糟糕,因为你基本上是在努力合并到另一个人身上。此消息是为了防止人们意外地引入远程头,告诉他们在推送前先合并。

在这种情况下,您已经创建了一个命名分支,这意味着您有意引入并共享一个新头,并且您可以将该警告作为信息丢弃。使用hg push --new-branch强制它(或版本1.6之前的-f)。

答案 1 :(得分:4)

除了将合并工作推向别人之外,远程负责人也很糟糕,因为它们会导致混乱。如果有几个人,那么制作新克隆的人不知道从哪个头开始。更糟糕的是:一个新的克隆将更新到默认分支上的最新头部,当人们将更改推送到不同的头部时,这个头部会从一个时刻变为另一个时刻。

在此处使用命名分支单独克隆帮助:新克隆将始终更新到默认分支的头部,然后人们可以根据需要更新到另一个分支。