这个问题是关于理解基本的统一差异输出格式。三种方式的差异和合并可能是最好的方法,从适当的GUI合并工具的舒适性,或至少,vim差异模式与插件,如fugitive.vim。
我发现在合并冲突时运行git diff
会产生一个包含两列优缺点的差异视图。
很明显,在比较相同数据的三个不同版本时,我们需要的信息比仅比较两个时更多。但这些专栏究竟意味着什么呢?现在显然有很多组合可用于现在属于给定线的可能“桶”。它过去只是空白(相同),+
(已添加)或-
(已删除),现在我们有空白++
,--
,{{1 },+
, +
和-
。甚至可能还有更多我没见过的东西。
答案 0 :(得分:3)
您指的是'组合差异格式'。原始uni-diff格式的这种扩展将两个或多个文件作为输入处理,将一个文件作为结果合并处理。此格式作为'combined diff format' section of the git-diff command manual.
的一部分详细描述答案 1 :(得分:2)
请注意,每个fileN
都有一列的git diff
"combined diff format"会被添加到输出行,以便注意X的行与其不同,生成成本可能
来自commit 72441af的最近Kirill Smelkov(2014年4月)非常有助于如何优化这种差异(对于Git 2.x,2014年第3季度)
D(A,P2)
非常庞大,因为merge-base
A
和P2
的{{1}}是几十个合并(来自A
,通过第一个父级),D(A,P2)
将从几个子系统合并到1个子系统。解决方案是避免计算n个1父差异,并通过同时扫描
A
和所有Pi树,在比较条目的每个步骤中找到更改为所有父路径,并且基于在该比较中,填充路径结果,并推断我们可以跳过 递归到子目录中,如果至少对于1个父目录,该目录树的sha1与{{{ 1}}。
这将使我们免于做大量不必要的工作。