我正在使用一台有两个头的机器:默认和测试。 Test是一段时间以前默认创建的分支。不久前,从测试中删除了数千个文件。测试中的文件也有很多变化。所有这些在测试中删除或更改的文件也是默认的。我想合并两个头,以便所有在测试中更改的文件保持不变,但所有已删除但仍处于默认状态的文件都会被添加。
当我合并时,它让我一个接一个地决定是否保留已删除的文件: 本地更改了远程删除的a / b.txt 使用(c)吊死版本或(d)elete?
我不介意手动合并文件中的差异,但我不想按c数千次删除文件......
答案 0 :(得分:0)
根据您的具体情况,可以在此处使用:local
(或:other
)合并工具。
请注意,这会严重影响一个或其他父级(p1或p2)的冲突文件,因此与:merge-local
或:merge-other
非常不同。也就是说,如果您在分支default
上并且正在合并分支test
,则在两个分支中修改文件both.txt
(相对于合并基础版本),则:
hg merge --tool :local
将完全放弃both.txt
中的test
更改,仅从both.txt
获取default
更改。 (如果仅在test.txt
中修改了其他文件test
,Mercurial将会进行这些更改。)
但是,如果所有其他方法都失败了,您可以在类Unix系统上使用以下技巧模拟输入c
到每个提示符(我不知道它是否适用于Windows):
yes c | hg --config ui.interactive=true merge test
通常情况下,如果hg
的输入来自管道(在这种情况下:yes c
打印一个由c
组成的无限行序列),则不会尝试从标准输入读取(因此它就像你在每个提示中键入u
一样)。但是,将ui.interactive
设置为true
会强制Mercurial从stdin读取。
如果您愿意,可以将其与--tool :merge-local
或--tool :merge-other
结合使用。