【发布时间】:2012-06-04 09:35:18
【问题描述】:
我将 Mercurial 与 TortoiseHg 一起使用。我有两个分支(A 和 B)和两个文件(toto.cs 和 titi.cs)。
当我想将B 与A 合并时,有没有办法从合并中排除titi.cs,而只合并toto.cs?如果可以,我该怎么做?
【问题讨论】:
标签: mercurial merge tortoisehg
我将 Mercurial 与 TortoiseHg 一起使用。我有两个分支(A 和 B)和两个文件(toto.cs 和 titi.cs)。
当我想将B 与A 合并时,有没有办法从合并中排除titi.cs,而只合并toto.cs?如果可以,我该怎么做?
【问题讨论】:
标签: mercurial merge tortoisehg
当然。不合并titi.cs 实际上只是完全按照它存在于A 或B(您的选择)中的方式使用titi.cs。您可以像这样手动这样做:
hg update A
hg merge B
hg revert --rev A titi.cs
(将 A 和 B 交换到另一个方向)。
或者您可以在您的Merge Tool Confguration 中自动在您的.hgrc 中使用类似的内容。
[merge-patterns]
titi.cs = internal:local
这告诉 Mercurial 始终对匹配该模式的文件使用“这个不是那个”。
如果您正在谈论某个您希望免于合并的文件,请参阅@Ry4chan's answer。这是完全有效的:一些文件,比如与构建相关的配置,可以自动生成,并且对它们的冲突解决是无用的。或者,您可能真的想删除在源文件中所做的更改。
另一方面,如果您试图模仿类似 SVN 系统的文件或目录限制合并,请小心。 revert 技巧并不意味着您合并了一些文件而没有合并其他文件:您合并了所有文件,revert 只是一种合并。
如果您想将一些更改从一个分支移动到另一个分支(例如,将某个子系统中的修复反向移植到旧的稳定分支),您不要将文件与修复合并;相反,您合并包含修复的 changesets; hg graft 将帮助您做到这一点。
【讨论】: