将Mercurial/TortoiseHG主干更改合并到分支中

5

我刚刚从SVN切换到Mercurial,在SVN中,我在主干上进行了几个更改后,会将一系列修订版本(从上一次与主干合并到分支的HEAD)合并到一个分支上。我想使用TortoiseHG在Mercurial中完成相同的操作,但我无法弄清楚如何操作。我刚提交了两个更改集到主干,现在需要将它们集成到分支中。提前致谢!

3个回答

23

我写了一份关于 在Mercurial中使用分支的指南。核心内容如下:

$ hg update mybranch # unless you are already at the tip of the branch
$ hg merge default   # merge in latest changes from "trunk"
$ hg commit -m 'Merge with default'

mybranch完成后,你关闭它并将其合并到默认分支:

$ hg commit --close-branch -m 'Ready for merge'
$ hg update default
$ hg merge mybranch
$ hg commit -m 'Integrated mybranch'

Mercurial的一个很棒的特点是,无论你合并的方向如何,你都可以使用相同的命令。Subversion的合并跟踪系统要求你在一个方向上合并时添加特殊的命令行标志,但在另一个方向上则不需要(我没有查阅手册就记不起哪个方向是哪个了)。

你能提供一份更新的指南链接吗?这条评论中的链接已经失效了。 - David Moye

7
在hg(或任何分布式版本控制系统)中,您可以将任何更改集与任何其他更改集合并(除了祖先)。如果您从TortoiseHG打开存储库日志(从资源管理器上下文菜单中查看更改日志或从命令行运行hgtk log),则可以更新到任何更改集,然后选择“合并”。在您的特定情况中,您需要更新到您的分支头,然后与主干头合并。

我的情况并不像这么简单,由于SVN的转换,但是,在未来我将采取这个确切的方法。 - Hungry Beast
@Chris: 你能分享一下你的设置细节吗?你使用的是什么样的分支结构? - Geoffrey Zheng
我试图将我的主干合并到我的分支中,但由于我的存储库是使用HG CONVERT从SVN存储库创建的,所以HG不知道我在途中合并了来自主干的更改。我从主干向分支执行了合并,选择保留所有来自分支的更改。我提交了。这使得HG认识到我的主干已经合并到了分支。然后我在主干上执行了新的更改,提交了,现在当我合并时,HG知道这些新的更改是唯一需要合并的更改。现在HG完全知道我的存储库中的情况。 - Hungry Beast

2

以下是我通常做的事情:

hg up trunk #assuming trunk is your main branch
hg merge -r myawesomebranch
#party

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接