在TortoiseHg和Bitbucket上,我们将这种情况存储在共享存储库中:
dev1和dev2的工作之间的合并应由dev1完成;但是dev1无法看到dev2的工作,因为最新消息无法将其推送到bitbucket存储库中,因为他被HG停了下来,原因是“中止:推送在分支“ Federico Development”上创建了新的远程头2221daef6518”
我担心问题是由dev2的一次提交引起的,dev2的一个提交在图片中用2个红色圆圈标记:他在本地的federico分支上提交,而federico也正在工作并在同一分支上提交。
>无论问题的最初原因是什么,我们都希望让dev2将其工作作为与dev1不同的分支头推送到共享存储库,以便dev1可以拉出dev2作业并合并两个头。有什么解决方法可以得到这个结果?
其次,我们想了解问题的根源,以便更好地理解并在以后防止它发生:
答案 0 :(得分:1)
默认情况下,Mercurial不允许将一个分支上的多个头推送到服务器。在您的情况下,dev2在dev1分支上创建了一个新提交,并创建了一个新头。
现在一个接一个地回答您的问题:
是的,这个问题很严重,因为dev2在dev1分支上创建了一个新提交,导致dev1分支具有多个头。
Mercurial中的提交是提交信息的一部分。因此,即使dev2在新分支上创建了新的提交之后,dev2所做的第一个提交仍仍在dev1分支上。
是的,您可以编写一个预提交钩子来实现此目的。
以下是您现在可以解决此问题的一种方法:
dev2可以使用--force
标志来使用多余的头部。这会将新的头推到服务器。这样,提交将被交换,但是最终将在dev1分支上遇到多个头,您需要通过合并或其他方式来解决这些问题。