我使用Mercurial和TortoiseHg。我有两个分支(A
和B
),包含两个文件(toto.cs
和titi.cs
)。
当我想将B
与A
合并时,是否有办法排除titi.cs
合并,只合并toto.cs
?如果有可能,我该怎么做?
答案 0 :(得分:6)
不确定。不合并titi.cs实际上只是使用titi.cs,就像它存在于A或B中一样(您的选择)。你可以这样做手动:
hg update A
hg merge B
hg revert --rev A titi.cs
(交换A和B去另一个方向)
或者您可以在.hgrc
中使用[merge-patterns]
titi.cs = internal:local
中的<{>}自动 。
{{1}}
这告诉Mercurial总是使用“this one not that one”来匹配该模式的文件。
答案 1 :(得分:3)
如果您正在谈论某个您希望免于合并的文件,请参阅@Ry4chan's answer。这是完全有效的:一些文件,如与构建相关的配置,可以自动生成,并且它们的冲突解决是无用的。或者,您可能实际上想要删除源文件中所做的更改。
另一方面,如果您试图模仿类似SVN的系统的文件或目录限制合并,请小心。 revert
技巧并不意味着你合并了一些文件并且没有合并其他:你合并了所有内容,revert只是一种合并。
如果要将某些更改从一个分支移动到另一个分支(例如,将某个子系统中的修补程序后退到旧的稳定分支),则不要将这些文件与修复程序合并;相反,您合并包含修复的更改集; hg graft
会帮助您这样做。