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