Mercurial合并/删除功能分支

时间:2011-06-15 11:28:37

标签: mercurial branching-and-merging

我正在尝试研究如何在mercurial中使用Branch-per-feature方法但是创建了一个分支来工作,并将其合并回默认值,我无法将我的更改推回到我的主存储库。什么是最好的办法?

screenshot of TortoiseHg with a branch

我创建了一个分支“Gauge customization”,在该分支中做了一些工作,然后将其合并回默认值。默认情况下进行了一些更改,现在我想将其提交回主存储库。但是当我尝试时,我得到了:

  

abort:push创建新的远程分支:Gauge定制!
  提示:使用'hg push --new-branch'创建新的远程分支

我不认为分支会出现在主仓库中,并且通过在本地合并它我可以以某种方式在分支机构(或可能的分支机构)中工作,然后当我测试所有内容时,将其推送到主机回购。

Gauge定制分支是否仍然显示?真的,我以为我只会在这个阶段看到默认值?但是我不能正确理解这些工具吗?我应该创建远程分支吗? 理想情况下,我希望能够为每个功能打开一个分支,并且在任何时候都有3或4个这样的分支运行(这是我公司的工作方式)所以我现在想要掌握一些事情。

2 个答案:

答案 0 :(得分:5)

从技术上讲,您可以使用--new-branch将新分支提交到主仓库。如截图所示,从拓扑视图中看不到具有头部的新分支,但是从命名空间视图,即当hg中止推送时,它只是希望您明确确认添加新分支(名称)到远程仓库。

但是,对于像您这样的任务 - 临时功能分支 - 更常见的工作流程是不使用命名分支,而是使用匿名/书签分支或单独克隆。命名分支通常用于长期存在的分支,如 stable legacy 等。如果您创建匿名/已添加书签的分支并在其功能完成时将其合并,则hg在推送​​时不会抱怨。

在此背景下经常推荐的阅读是A Guide to Branching in Mercurial

答案 1 :(得分:4)

合并两个分支并没有摆脱它们中的任何一个。您需要通过切换到它并执行以下操作来手动关闭功能分支:

hg commit --close-branch -m 'Closing branch'