【问题标题】:Merge branches locally本地合并分支
【发布时间】:2013-06-13 20:26:12
【问题描述】:

我有一个名为“Myproject”的存储库,其中我们有一个分支“MyProject-new changes”

我已将本地计算机中的“MyProject”存储库克隆为 c:/我的项目

并类似地将“MyProject-new changes”克隆为 c:/MyProject-new changes"

两个存储库在拉取和合并后都有最新的更改。

现在,我需要将“MyProject-new changes”(分支)更改合并到本地“MyProject”中。

一旦我合并,我不想提交这些更改。我将在分支更改正在进行时恢复更改。我只是想整合新的变化,暂时看看效果。

请让我知道以下内容

  1. 如何在本地合并从“MyProhect-new changes”到“Myproject”的代码
  2. 我如何在测试后恢复 MyProject。

【问题讨论】:

    标签: mercurial merge


    【解决方案1】:

    因此,您需要一个可以测试合并的测试站点。通常人们会为实验创建单独的克隆。这为您提供了恢复更改的简单方法 - 只需删除实验性克隆。因此,让我们从制作 MyProject 的另一个克隆开始,并更新分支 default 中的最新提交。

    假设版本 25 是分支 default 中的最新版本。您可以使用命令hg up -r 25 对其进行更新。

    假设修订版 37 是 MyProject-new changes 中的最新修订版。您可以使用命令hg merge -r 37 将来自MyProject-new changes 的最新更改合并到分支default。之后,您将在工作目录中获得合并结果。

    由于您在单独的克隆中工作,因此您可以毫无疑问地提交。使用hg ci -m 'merge with new changes' 提交并测试结果。完成测试后,您可以简单地删除实验性克隆。

    【讨论】:

      【解决方案2】:

      最简单的方法是完全克隆您的存储库,合并并测试您想要的内容,然后在完成后丢弃存储库。 @Kirill 解释了如何做到这一点。

      但是为什么要这样做呢?也许您会遇到问题或小的合并冲突,您将在克隆中修复这些问题。丢掉这项工作会很可惜——你将来可能会需要它。当然,您可以简单地保留克隆,但我建议重新考虑您的前提:您为什么不想合并两个分支?

      您有一个主分支 (default) 和一个功能分支 new-changes,并且您希望安全地查看它们如何协同工作。这里有两种方法可以在不克隆存储库的情况下做到这一点:

      1. 为了保证default 分支的安全,只需从默认的合并到 new-changes:

        hg update new-changes  # switch to the branch
        hg merge -r default
        

        您现在可以测试新更改并修复任何问题。这是一个非常常见的工作流程:对default 的更改被合并到长时间运行的分支中,以防止它们之间的距离太远。当您最终准备好统一开发的两条线时,将new-changes 合并到默认线中,一切都会正常工作。

      2. 如果你想暂时保持两个分支的纯净,你可以创建一个 new 分支testing 并将两个现有分支合并到其中。您可以保留它并最终将其合并到default,或者如果new-changes 被证明是一个失败的实验,则将其关闭。 (详情:如果testing 植根于其中一个分支的头部,则该分支将“没有可合并的内容”。您只需合并另一个分支。)

      如果您不想冒险弄乱您的主存储库,您当然可以克隆它并在克隆上尝试上述方法之一。一旦您对它正常工作感到满意,请将所有内容推回主存储库。

      【讨论】:

      • 我认为第一个选项看起来不错..我犯了一个错误,将新更改合并到默认值中,我的默认值被搞砸了。好在我还没有提交...我该怎么做恢复到默认分支?另外,修订号是什么意思?我确定它不是变更集 id?那我怎么得到它?
      • 不确定你在问我什么。如果您开始合并,改变主意,现在您正坐在一堆文件中,请使用hg update --clean .(请参阅hg help merge)。剩下的,我想你是想问另一个答案?无论如何,您可以通过 id 或编号来识别修订。好好看看hg log的输出。
      猜你喜欢
      • 2020-04-30
      • 2017-12-15
      • 2016-11-07
      • 2014-09-23
      • 2018-12-20
      • 2014-03-06
      • 1970-01-01
      • 2017-07-13
      相关资源
      最近更新 更多