如何在不完全合并分支的情况下合并来自另一个分支的最新修订?

时间:2015-01-23 10:33:44

标签: version-control merge mercurial branch tortoisehg

我正在使用mercurial GUI TortoiseHg。我被要求从默认工作分支转到生产分支,编写一段代码,提交并将其推送到那里,然后更新回默认分支并继续我的下一个分配,因为我们保持默认和生产分支分开。但是,还有一个请求将最新的更改合并到默认分支"。

如何将最新版本合并到默认版本,而不将两个分支合并为一个,这当然不是我想做的?

1 个答案:

答案 0 :(得分:2)

你不能。

合并时,您始终将完整分支合并到该点,而不仅仅是单个变更集。

你有两个选择。

您可以“移植”或“移植”(取决于您正在使用的Mercurial的版本)从一个分支到另一个分支的单个变更集。这将有效地(尝试)将相同的更改应用于目标分支,并记下变更的来源。这不是合并。

要使用这些函数,请首先更新您希望将变更集“合并”到的分支的顶端,然后使用graft / transplant命令在其上应用其他变更集。如果您使用TortoiseHg执行此操作,则可以右键单击要“合并”的更改集,并且应该有一个菜单项。如果不是,您可能需要启用扩展程序,甚至可能需要更新到更新版本的Mercurial / TortoiseHg。

你应该做的是更新回到你从一开始就创建其中一个分支的点,在它之上提交修复,然后将它合并到两个分支中。假设你真的想合并那个。

换句话说,你会有这个:

A---B---C---D---E---F    <-- branch 1
     \
      +-1---2---3---4    <-- branch 2

您将更新回B,在B之上提交修复,然后将该更改集合并到两个分支中,如下所示:

      +-C---D---E---F    <-- branch 1
     /
A---B---X                <-- fix changeset
     \
      +-1---2---3---4    <-- branch 2

然后合并后:

      +-C---D---E---F---G
     /                 /
A---B---X-------------+
     \                 \
      +-1---2---3---4---5
在这种情况下,

G5是两个合并。