我想看到三个文件的三向差异,每个差异输出为 git 风格的冲突。也就是说,公共行逐字显示,文件的不同部分用冲突标记“<<<<<<", "||||||", "======", and ">>>>>>”(也称为“冲突括号”)显示:
common line 1
common line 2
<<<<<<<
text from mine.txt
|||||||
text from base.txt
more text from base.txt
=======
text from yours.txt
>>>>>>>
common line 3
common line 4
<<<<<<<
same text in mine.txt and yours.txt, none in base.txt
|||||||
=======
same text in mine.txt and yours.txt, none in base.txt
>>>>>>>
common line 5
common line 6
最重要的是,我希望每个差异都用冲突括号标记,包括可合并的差异。
以下是一些不起作用的选项:
git diff
只接受两个文件作为输入;也就是说,它比较两件事而不是三件事。git merge-file
不显示可合并的差异(它合并它们)。diff3 -m
就像git merge-file
:关闭:它显示整个文件,带有冲突标记
冲突,但它不显示可合并差异的冲突标记。diff3
显示所有差异,甚至是可合并的差异,但不以给定格式显示。diff3 -A
不显示所有差异,可合并的差异不会带有冲突标记输出。我可以编写一个程序,获取
diff3
输出和原始文件,并以 git 样式输出冲突的文件。但是,如果可以的话,我宁愿避免这种情况。
Git 的
vimdiff
合并工具向您显示所有四个版本(我们的、基础的、他们的、到目前为止的结果),您可以使用 ]c
和 [c
逐步完成更改,包括所有自动合并的更改并查看所有内容, 1do
获取本地版本,2do
获取基础版本,3do
获取远程版本。