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

How to merge the latest revision from another branch without merging the branches completely?

我正在使用多变的 GUI TortoiseHg。我被要求从默认工作分支转到生产分支,编写一段代码,提交并将其推送到那里,然后更新回默认分支并在那里继续我的下一个任务,因为我们将默认分支和生产分支分开。但是,还有一个请求 "merge the latest change also to default branch".

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

你不能。

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

你有两个选择。

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

要使用这些功能,请先更新到您要将变更集 "merged" 放入其中的分支的尖端,然后使用 graft/transplant 命令在其上应用其他变更集。如果您使用 TortoiseHg 执行此操作,则可以右键单击您想要 "merge" 的变更集,那里应该有一个菜单项。如果不是,您可能需要启用扩展,甚至可能需要更新到 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 是本例中的两个合并。