我正在使用mercurial GUI TortoiseHg。我被要求从默认工作分支转到生产分支,编写一段代码,提交并将其推送到那里,然后更新回默认分支并继续我的下一个分配,因为我们保持默认和生产分支分开。但是,还有一个请求将最新的更改合并到默认分支"。
如何将最新版本合并到默认版本,而不将两个分支合并为一个,这当然不是我想做的?
答案 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
在这种情况下, G
和5
是两个合并。