Git 什么';暗斑马的目的是什么?

Git 什么';暗斑马的目的是什么?,git,Git,git diff有这个功能--color moved=dimmed zebra,听起来很漂亮,但我就是不明白。如果发现zebra非常有用,因为它显示移动的块。但是暗斑马在我看来完全是任意的。为什么“两个相邻街区的边界……被认为是有趣的”此功能如何帮助我更有效地分析差异?如果我了解其预期用途,我觉得此功能将非常有用。一个具体的例子可能会有所帮助 以下是手册页中的片段 斑马 贪婪地检测至少20个字母数字字符的移动文本块。检测到的块使用color.diff.{old,new}移动颜色或color.di

git diff
有这个功能
--color moved=dimmed zebra
,听起来很漂亮,但我就是不明白。如果发现
zebra
非常有用,因为它显示移动的块。但是暗斑马在我看来完全是任意的。为什么“两个相邻街区的边界……被认为是有趣的”此功能如何帮助我更有效地分析差异?如果我了解其预期用途,我觉得此功能将非常有用。一个具体的例子可能会有所帮助

以下是手册页中的片段

斑马

贪婪地检测至少20个字母数字字符的移动文本块。检测到的块使用color.diff.{old,new}移动颜色或color.diff.{old,new}移动替代颜色绘制。两种颜色之间的变化表示检测到新块

暗斑马

与zebra类似,但会对移动代码中不感兴趣的部分执行额外的调光。两个相邻区块的边界线被认为是有趣的,其余的则是无趣的


<代码>斑马斑纹< /代码>模式非常有用,当补丁主要由移动或复制代码组成,在复制代码的中间更改了几行代码。例如,(但是,此链接不会显示模式)

zebra模式显示有两个单独的移动块:前者和后者,分别用紫色和蓝色表示,这两个块稍后移动,并在它们之间插入一条直线。下面是一个移动节的示例:

这是一个有点难注意到添加线;这并不是很突出

当斑马变暗时,几乎所有移动的代码都是灰色的,因为它最终是无趣的。只有第一个块的末尾、第二个块的开头(下一行)和添加到目标中的行才会以颜色高亮显示。此模式允许您关注(a)添加的行和(b)它们来自何处的边界,而不关心任何移动的代码

下面是在
暗斑马
模式下该代码的外观。注意你的眼睛是如何被吸引到相关部分的:


因此,基本上,这只是对人类视觉的优化,使其更容易注意到真正重要的东西。

@bk2204的答案通过一个很好的例子帮助我理解,现在我想提供另一个答案

移动的线条“有趣”而不是变暗意味着什么?

当您看到两个高亮显示的行位于两个已删除和已移动的代码块的边界处时,您应该认为,“这些行不再相邻;有些代码已插入此处,或者这些代码块已完全分离。”

同样,当您看到两个高亮显示的行位于两个添加和移动的代码块的边界处时,您应该认为,“这些行过去不是相邻的;有些代码在这里被删除了,或者这些代码块来自完全不同的位置”