merge
是将更改从一个分支转移到另一个分支的方法。我知道你合并default
到功能中,但现在你走另一条路。这是一个示例,其中编号的变更集来自其他人,而字母变更集来自您:
在你做任何事情之前,你克隆并拥有这个:
[1]---[2]---[3]---[4] (default branch)
然后您创建名为“功能”的分支并对其进行两次提交,产生:
[1]---[2]---[3]---[4] (default branch)
\
[A]---[B] ('feature' branch)
然后您hg pull
将更改为默认值,因为您在本地存储库中分道扬镳:
[1]---[2]---[3]---[4]---[5]---[6] (default branch)
\
[A]---[B] ('feature' branch)
现在您希望他们的更改(5 和 6)集成到您的分支中,因此您可以:
hg checkout feature # make sure you're looking at the he head of your branch
hg merge default # merge default into your branch
产生:
[1]---[2]---[3]---[4]---[5]---[6] (default branch)
\ \
[A]---[B]---[C] ('feature' branch)
如果我的理解正确,那么您已经完成了所有这些,所以现在您只需将您的分支(包括新的合并提交 C)带入默认值,这又是通过合并完成的:
hg checkout default # hop back to default, files look like [6] and [A] and [B] are missing
hg merge feature # merge feature into default brining [A] and [B] in
产生:
[1]---[2]---[3]---[4]---[5]---[6]---[7] (default branch)
\ \ /
[A]---[B]---[C] ('feature' branch)
这看起来像这样进行了很多工作,但实际上通常只是:
hg branch feature
....work....
hg commit
hg pull
hg merge default
hg checkout default
hg merge feature
如果pull
没有从其他人那里带来任何新作品,您可以跳过将默认值合并到您的作品中。
这确实创建了两个新的合并变更集。如果您发现它们没有帮助,它们很容易隐藏hg log
(有些人喜欢记录每次合并的方向),但是如果您想完全避免它们,您可以使用bookmarks
(非常类似于 git 分支)而不是“命名分支”对于您的功能 - 那么您将在返回时避免合并变更集,因为它在精神上等同于 git 所说的“快进”合并。