为什么移动的代码没有在git diff中着色?

Eug*_*kov 7 git git-diff

我安装了最新的git并将其配置为突出显示移动的代码:

$ git config diff.colormoved default
Run Code Online (Sandbox Code Playgroud)

以下是代码移动时的外观(参见1-> 2) 在此输入图像描述

但3-4不会突出显示为已移动的代码.

这是独立的变化:

在此输入图像描述

Ry-*_*Ry- 10

请参阅--color-moved/ colormovedgit-diff(1)中的/ 的文档:

--color-moved[=<mode>]

移动的代码行的颜色不同.可以通过diff.colorMoved配置设置进行更改.该<mode>默认no如果没有给出选项,并zebra如果没有模式的选项中给出.模式必须是以下之一:

  • 没有
    突出显示移动的行.

  • default
    是zebra的同义词.这可能会在未来转变为更明智的模式.

  • plain
    在一个位置添加并在另一个位置删除的任何行都将使用color.diff.newMoved进行着色.类似地,color.diff.oldMoved将用于在diff中的其他位置添加的已删除行.此模式选择任何已移动的行,但在检查中确定是否在没有置换的情况下移动了代码块时,它不是很有用.

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

  • dimmed_zebra
    与zebra类似,但执行了移动代码的无趣部分的额外调.两个相邻街区的边界线被认为是有趣的,其余的是无趣的.

具体来说,默认值是zebra它检测到的

至少20个字母数字字符的移动文本块

.my $ctx = shift;不包含至少20个字母数字字符.如果您使用git diff --color-moved=plain或添加# ten more ANs到行的末尾,您的示例将突出显示为已移动.