通过TortoiseHg Mercurial - 合并一个命名分支然后关闭它

时间:2011-02-01 00:05:10

标签: mercurial tortoisehg

我有一个名为分支的NewFeature,我使用默认分支。我已经对该分支进行了一些提交,现在我想合并它以重新加入默认分支。

现在(每个字母都是提交):

   default: A---B
NewFeature:      \--C---D

我想要的是什么:

   default: A---B-----------E
NewFeature:      \--C---D--/

我尝试右键单击目录并选择“Hg Commit ...”。然后我选择了“关闭当前命名的分支”。我收到了这个错误:abort: can only close branch heads

我还在资源库资源管理器中查找了“close branch”选项,但我找不到任何内容。

有人可以帮忙吗? 提前谢谢!

编辑:我向TortoiseHg发布了issue

5 个答案:

答案 0 :(得分:41)

您提供的示例更多的是合并而不是真正的关闭。此外,如果它很简单,您可能不希望/需要创建命名分支。

如果你真的想通过TortoiseHg关闭分支,例如

  1. 您创建了NewFeature分支
  2. 然后修改了Default分支和NewFeature分支
  3. 然后如果NewFeature分支需要相当长的时间,你可能已经将几次Default合并到NewFeature中(以避免在你想要最终将NewFeature分支合并到默认分支时有太多差异)
  4. 最终您的新功能已完全实现或足够稳定,您将NewFeature分支合并为默认分支
  5. 从现在开始,没有人应该在NewFeature分支上提交任何内容,所以你想关闭它。

    你可以在TortoiseHg(我有版本2.3.2)中这样做:

    1. 点击Hg提交... 当您在NewFeature分支上(无需提交任何内容 - 或者您在最终合并时执行此操作)
    2. 点击“分支:NewFeature”(它以粗体显示在顶部)
    3. 选择“关闭当前分支”

答案 1 :(得分:23)

要合并,您需要一个干净的工作副本 - 没有未提交的更改。合并将放在工作副本中以供审阅,然后您提交工作副本以“完成”合并。

如果你有未提交的更改,你不准备提交,你可以看到暂时搁置这些更改(如果你有适当的扩展)或在其他地方签出一个新的工作副本用于合并。

使用资源库资源管理器:

  1. Update工作副本转为B

  2. 在修订历史记录中选择rev D行。

  3. 右键点击转化D,然后选择Merge with...。对话框应显示rev B应为本地rev,D应为其他rev。

  4. 点击合并对话框中的Merge并解决所有冲突(如果有)。

  5. 到目前为止,存储库中没有任何更改 - 您的合并位于工作副本中。因此,如果出现问题,您可以取消合并,恢复工作目录,并在以后或在进行其他一些分支或主干更改后重新开始。

    如果在步骤1-4之后一切正常,请单击合并对话框中的Commit以提交合并。

答案 2 :(得分:15)

对于那些对这个问题的答案感到困惑的人,以下是如何在TortoiseHg Workbench中执行此操作的说明:

如何合并功能分支和关闭分支

  1. 打开TortoiseHg Workbench。
  2. 从Registry Repository中选择您的存储库。
  3. 切换到要将分支合并到的分支(在此示例中为默认值):
  4. Switch to the default branch

    1. 右键单击要合并和关闭的分支(本示例中为NewFeature),然后选择与本地合并。这会将分支更改从NewFeature分支合并到default
    2. Merge one branch into another

      1. 您将看到一个确认框,确认您的更改将从一个分支合并到另一个分支,单击步骤下一步,立即提交并完成
      2. Confirmation box

        1. 现在您可以从图表中看到更改已合并,我们现在可以关闭NewFeature分支,因为我们不再需要它:
        2. Branch merge graph

          1. 将您的本地更新为您要关闭的分支,在这种情况下,它是NewFeature
          2. Update to branch to close

            1. 点击提交,工作台顶部的绿色大勾号。 Big green tick

            2. 在提交窗口中,您应该看到要在注释文本框上方关闭的分支。单击分支名称:

            3. Commit window with branch name we want to close

              1. 会弹出一个窗口并选择关闭当前分支
              2. Close current branch

                1. 现在点击提交。您的图表应显示分支已关闭:
                2. Graph showing closed branch

答案 3 :(得分:1)

在TortoiseHg中,在使用提交对话框之前,必须将您的工作副本更新到要关闭的分支的顶端。

关闭分支将在分支提示之上创建一个新的变更集。

如果您已更新到不在命名分支顶端的变更集,则通常会出现您所描述的错误(abort: can only close branch heads)。

答案 4 :(得分:1)

你似乎也得到这个错误,分支已经关闭,即试图关闭一个封闭的分支。更有用的错误消息将非常有用。