使用Mercurial合并特定的大块代码



在具有多个分支的repo上使用Mercurial,有没有一种方法可以只使用主干中的特定代码来更新分支?

例如,如果我们关注一个同时存在于分支和主干中的文件。除了一行代码外,这个文件在分支和主干中都是相似的。

如果在主干文件中进行了更改,是否有一种方法可以在不执行完全合并的情况下将这些更改拉入主干(即,我仍然希望保持分支和主干分离,我只想用一些主干更改更新分支,而不必手动将这些更改复制/粘贴到分支)?

您可以使用hg-grapve命令:

hg接枝[选项]。。。[-r]REV…

将其他分支的更改复制到当前分支

此命令使用Mercurial的合并逻辑来复制单个更改而不合并历史图中的分支。这有时被称为"后台移植"或"樱桃采摘"。通过默认情况下,graft将从源中复制用户、日期和描述变更集。

变更集是当前修订的祖先,具有已经被移植,或者是合并将被跳过。

如果指定了--log,则日志消息将附加一条注释形式:

(接枝自CHANGESETHASH)

如果移植合并导致冲突,则移植过程为中断,以便可以手动解决当前合并。一旦所有冲突都得到了解决,移植过程可以继续-c/-continue选项。

最新更新