问题描述
||
我正在使用具有稳定和实验分支的存储库。有时我在实验分支上添加了尚未准备好用于稳定分支的文件。合并时,我想合并两个分支共有的文件中的更改,但忽略其中一个分支上不存在的文件。
这是一个简单的示例:
hg init
hg branch stable
(create file A)
hg add A
hg commit -m \"Added A\"
hg branch exp
(create file B)
hg add B
hg commit -m \"Added B,which is really experimental\"
(modify file A)
hg commit -m \"Some changes to A\"
hg update stable
hg merge exp
但是我更改了合并工具的配置,Mercurial似乎总是将B与合并一起使用。由于它在稳定分支上不存在,因此永远不会发生冲突。
我可以执行以下操作:
hg update stable
hg merge exp
hg commit -m \"Merged\"
hg revert -r 0 B
但这需要我知道哪些文件需要还原。
关于使合并忽略一个分支上不存在的文件的最简单方法的任何想法,最好自动执行?
解决方法
您不能要求Mercurial做您想做的事。
您不合并单个文件,而是合并整个分支,这意味着分支中的所有文件都成为合并的一部分。这就是Mercurial的设计方式和运行方式。
现在,您可以在提交前还原/忘记/删除不需要的文件,但是稍后您将自己设置为灾难。
我建议您将要保留的内容与不知道是否要保留的内容分开,以便可以合并一个分支,而现在将另一个分支分开。