【问题标题】:Merging selected changes合并选定的更改
【发布时间】:2013-07-12 18:22:13
【问题描述】:

[我将我的问题标记为 mercurial,但实际上,我问的是一个适用于其他源代码控制应用程序的概念性问题。]假设您有一个文件夹,其中包含受版本控制的应用程序源代码;称之为主干线。我克隆存储库并开始修改代码,处理程序的新版本,一次又一次地提交修订版,这些修订版永远不会成为主干的一部分。

然后有一天,在修订 23 的工作中,我发现了一个错误。

我提交它,作为修订版 24。

我希望您修复我的错误,而不需要我所做的所有其他更改。将修订版 24 的代码(错误修复)推送或合并回主干的一般程序是什么?

【问题讨论】:

    标签: version-control mercurial


    【解决方案1】:

    在 Mercurial 中,您有多种选择(我确信其他 DVCS 也有类似的功能)

    最简单的方法:一旦你意识到错误属于主线主干,你更新到主线提示,提交,推送,然后将该变更集合并到你的侧项目中。

    hg up -r mainline
    # make your changes
    hg com -m "I fixed the bug"
    hg push -r mainline   ## now others can pull it!
    hg up -r sideproject
    hg merge mainline
    hg com -m "merge mainline bugfix into sideproject"
    

    完成。

    有一些方法,通过使用 mq 扩展或导出补丁,可以让您编辑历史以获得类似的结果,但它们都只是在事后尝试完成上述方法。

    变更集包含其祖先的所有变更。因此,您需要在拓扑上将主线更改(修订版 24)与您的副项目(修订版 23)分开。

    【讨论】:

    • 这是一个很好的答案。我来到这里以为有人会说“使用hg graft”,只有当您已经在非主分支中进行了提交时,这才是正确的答案。如果您尚未完成提交,请在 main/master/trunk/release 中执行,然后完全按照此答案所述将其合并到您的侧/功能分支中。 mq 永远不是答案。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2014-06-13
    • 2020-09-07
    • 2017-05-31
    • 2010-10-12
    • 2013-09-26
    相关资源
    最近更新 更多