Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial中的分支和远程头_Mercurial_Branch - Fatal编程技术网

Mercurial中的分支和远程头

Mercurial中的分支和远程头,mercurial,branch,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) 强行推进

我使用以下命令创建了一个新分支:

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)
强行推进有什么不好的吗?为什么远程头不好


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

远程头是不好的,因为您基本上是在将合并工作推到另一个人身上。此消息用于防止人们意外引入远程头部,告诉他们在按下前先合并


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

除了将合并任务推给其他人之外,远程头也不好,因为它们可能导致混乱。如果有几个克隆人,克隆人就不知道从哪个克隆人开始。更糟糕的是:一个新的克隆将被更新到默认分支上的最新头部,当人们将更改推送到不同的头部时,该头部会不时地发生变化


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

他们正在添加一个--new branch选项,将来您可以使用它作为--force的更安全的替代方法。提交错误消息也应该改进。他们已经添加了它,尽管它在1.8.1上对我不起作用(提交错误消息仍然是一样的)。是的,它从Mercurial 1.6开始就可用。我已经更新了答案,以反映这一点。@barraponto是您推动的回购协议早于1.6?如果是这样,我想您需要使用-f。@barraponto:
--new branch
只有在新分支的第一次提交被命名时才有帮助。如果从默认分支中有两个头部,然后将其中一个作为命名分支,则此操作不起作用。在这种情况下,您仍然必须使用
-f