在本地合并分支

时间:2013-06-13 20:26:13

标签: mercurial merge

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

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

同样克隆了“MyProject-new changes”as c:/ MyProject-新变化“

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

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

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

请让我知道以下

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

2 个答案:

答案 0 :(得分:0)

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

假设修订版25是分支default中的最新修订版。您可以使用命令hg up -r 25更新它。

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

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

答案 1 :(得分:0)

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

但为什么呢?也许你会遇到问题或小合并冲突,你将在克隆中修复。抛弃这项工作将是一件遗憾的事 - 你将来可能会需要它。当然,你可以简单地保留克隆,但我建议重新考虑你的前提:你为什么不想合并这两个分支?

您有一个主分支(default)和一个功能分支new-changes,您希望安全地看到它们如何协同工作。在没有克隆存储库的情况下,您可以通过以下两种方式执行此操作:

  1. 为了确保default分支安全,只需将默认合并到新变更中:

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

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

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

    < / LI>

    如果您不想冒破坏主要仓库的风险,您当然可以克隆它并在克隆上尝试上述方法之一。一旦你对它正常工作感到满意,就把所有东西都推回主仓库。