合并在Mercurial中时,忽略不存在的文件

问题描述

|| 我正在使用具有稳定和实验分支的存储库。有时我在实验分支上添加了尚未准备好用于稳定分支的文件。合并时,我想合并两个分支共有的文件中的更改,但忽略其中一个分支上不存在的文件。 这是一个简单的示例:
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的设计方式和运行方式。 现在,您可以在提交前还原/忘记/删除不需要的文件,但是稍后您将自己设置为灾难。 我建议您将要保留的内容与不知道是否要保留的内容分开,以便可以合并一个分支,而现在将另一个分支分开。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...