0

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

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

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

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

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

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

请让我知道以下内容

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

2 回答 2

0

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

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

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

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

于 2013-06-14T13:54:25.140 回答
0

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

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

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

  1. 为了保证default分支安全,只需从默认合并新更改:

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

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

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

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

于 2013-06-14T14:58:51.417 回答