我有时但并不总是在我的默认分支上有两个头。事件的顺序如下:
hg pull
hg update -C default
hg branch mybranch
hg merge default //merge in default
hg commit -m"merged mybranch into default"
hg heads -default //shows 2 heads
hg push --branch default //won't let ne. create 2 heads
'竞争对手' head似乎是在当天早些时候承诺违约的变更集。
我不明白为什么有时会发生这种情况,而不是其他时间。
我通常提供的解释是,在我做了拉动之后,另一个人推动了改变(我在上面列表中的第一个动作)。但我认为这种情况会发生在其他情况下在我开始之前,他推动了他的变革。
我原本以为当我用他的提交拉出默认值时,我会默认一个头。我的合并/提交应该在此之后创建一个新的头。为什么会创建第二个头?
答案 0 :(得分:2)
首先,这是一个完全正常的情况。这不是问题,也不是错误,或者需要避免的事情 - 这就是DVCS的工作方式。
简而言之:每当两个人从同一个提交开始工作并做不同的事情时,你会得到两个头。如果他们在自己的(命名的)分支(如上所述)或default
上进行操作并不重要。将您的工作合并回default
并且其他人已经完成default
工作后,您就会有两个人,而且有人必须合并。事情就是这样。
在您推送hg pull
然后hg merge
之前,您可以通过创建新的合并提交,将您的工作与您的工作整合在一起,与两位家长 - 您的工作和工作 - 然后你推,你不会看到那个警告。
顺便提一下,您可能需要查看bookmarks
功能。它更适合你看起来比你正在使用的命名分支上面的每个功能分支,但它绝不会让你不必处理多个头。
答案 1 :(得分:0)
hg heads
hg branch
没有提交什么都没做(你没有“mybranch”)