【问题标题】:Mercurial merge / remove a feature branchMercurial 合并/删除功能分支
【发布时间】:2011-06-15 11:28:36
【问题描述】:

我正在尝试研究如何在 mercurial 中使用每个功能的分支方法,但是已经创建了一个分支来工作,并将其合并回默认值,我无法将我的更改推送回我的主存储库。最好做什么?

我创建了一个“仪表自定义”分支,在该分支中做了一些工作,然后将其合并回默认值。继续进行一些默认更改,现在我想将其提交回我的主存储库。但是当我尝试时,我得到:

中止:推送创建新的远程分支:仪表自定义!
提示:使用 'hg push --new-branch' 创建新的远程分支

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

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

【问题讨论】:

    标签: mercurial branching-and-merging


    【解决方案1】:

    从技术上讲,您可以使用--new-branch 将新分支提交到主存储库。如您的屏幕截图所示,实际上并没有一个新分支,其头部来自拓扑视图,而是来自命名空间视图,即当hg 中止您的推送时,它只需要您明确确认添加一个新分支(名称)到远程仓库。

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

    在这种情况下,经常推荐阅读的是A Guide to Branching in Mercurial

    【讨论】:

    • 我担心的是我不想用我在本地创建的任何分支污染主存储库,我听说使用每个功能分支的方法来隔离是一种“好习惯”可能希望单独集成的离散工作单元。这是如何做到的,我完全愿意接受有关的想法。我接受您对临时功能分支(这正是我在这里的目标)和长寿分支之间的区别分支看起来像我接下来需要阅读的内容。非常感谢
    • 在您的示例中,可以像这样使用带书签的临时功能分支方法:1)书签 rev 44 作为 main(或 master,..),2)书签rev 44 作为 gauge,3) 进行并提交 Gauge 更改,4) 更新到 main,以及 5) 将 gauge 合并到 main 。但是,就我个人而言,我更喜欢在必要时工作、提交、书签和分支。在您的示例中,这将导致根本没有分支,因为主线和功能工作是按顺序发生的。阅读链接的博客文章后,您应该选择自己喜欢的方式。
    • 这正是正确的答案——除非您希望将它们永久记录在历史记录中,否则不要为每个功能使用命名分支。阅读“Mercurial 分支指南”后阅读:mercurial.selenic.com/wiki/StandardBranching
    【解决方案2】:

    合并两个分支并不能消除其中任何一个。您需要通过切换到它并执行以下操作手动关闭您的功能分支:

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

    【讨论】:

    • 我尝试运行该命令,并且 Workbench 更新为显示一个水平条而不是正常的圆形图标(用于分支),但我仍然无法提交我的主存储库。返回的信息如上:push created new remote branches...
    • 那我要问以下问题(因为您的问题中没有明确说明):您之前是否将您的功能分支推送到您的外部存储库?因为如果不是,那么远程仓库将您hg push 识别为创建新分支是完全可以预期的。然后,您应该按照建议进行操作并向其中添加 --new branch 参数,将(现在可能已关闭)分支推送到远程存储库。
    • 不,我没有尝试将功能分支推送到主存储库。我的目的是创建一个空间来试验每个功能分支的概念 [link]mercurial.selenic.com/wiki/… 并将该开发工作块与默认分支隔离开来,这样我可以在它转向时丢弃它浪费时间,或者当我很高兴它完成时将其合并回默认值。更进一步,我希望能够一次独立地处理多个功能分支
    • 只需使用 --new-branch 将关闭的分支推送到服务器。分支名称将让您稍后查看变更集的来源。
    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 2022-07-08
    • 2013-10-03
    • 2020-12-01
    • 1970-01-01
    • 2017-02-05
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多