摆脱Mercurials多头HEADS

时间:2013-01-22 04:22:55

标签: mercurial mercurialeclipse

我刚开始使用hg Mercurial存储库并陷入多个HEADS的情况。我过去也将我的代码推送到存储库,但它也缺少当前代码。在我看来,每当有其他人推动他的代码,我的默认人数增加在我身边,但我没有在任何其他机器上看到这种行为。任何身体都可以帮助我摆脱这些头脑并且不会失去我的推力吗?

注意:我正在使用带有eclipse mercurial插件的MAC OSX。

2 个答案:

答案 0 :(得分:3)

据我现在了解你的问题,你正在推送到存储库,还有其他人使用相同的存储库。正确的吗?

对我来说,似乎你没有处理最新的提交,因此在你当前的分支上创建了多个头。另请注意:Mercurial中的头部和分支之间存在一些差异。

我可以想象这样的事情发生在你身上(假设我们只在一个分支上工作):

您的工作副本:

1-2-3-4-5-6 (where number is revision)

所以你要r6,例如两次提交7'8' 现在您的工作副本如下所示:

1-2-3-4-5-6-7'-8'

但与此同时,你所有的共享存储库都是这样的:

1-2-3-4-5-6-7-8-9-10 (so r10 is the 'latest' commit published)

现在,如果你要推送到共享存储库,就会发生这种情况:

            7'-8'
           /
1-2-3-4-5-6-7-8-9-10

瞧,现在有两个不同的头,名为8'10

对于未来,首先从共享存储库中提取并更新最新提交将阻止您解决此问题。

现在,正如您的问题是如何解决多个头,有不同的选项,最简单的就是进行简单的合并。

hg help merge

根据头部是否仅在本地(查看头部/提交的phase),您有更多(可能更优雅)选项,例如rebasing

一般来说,this是开始/深入Mercurial的好资源。

答案 1 :(得分:2)

已经给出了一些很好的一般信息,但我会给出一些MercurialEclipse特定信息。

  • 理解Mercurial的关键是历史图表。 (在导航器视图中右键单击并选择Team - > Show History)。注意左栏是图表。提交之后比较提交之后的图形。还可以在拉动之前比较图形之前的图形。
  • 在Mercurial中提交变更集并不意味着其他人可以看到它。其他人只能看到推送的变更集
  • 一般来说,要修复这种情况,你应该合并所有的头(Team - > Merge)然后推新的单头。
  • 一旦你回到一个单一的头,一个人的工作流程应该
    • 在同步之前提交更改
    • 右键点击该项目 - >团队 - >同步
    • 在同步视图中,右键单击传入节点,然后选择“拉动并更新”。然后,这将提示您合并传入的更改
    • 当您准备推送更改时(您应该只有一个头且没有任何内容)您可以通过右键单击传出节点在同步视图中执行此操作。推动变革集会推动所有祖先。