在git-diff的输出中白色空格着色

xienkqul  于 2023-02-02  发布在  Git
关注(0)|答案(6)|浏览(211)

关于代码格式,我是一个纯粹主义者:)。我经常删除不必要白色(只有ws的行,行末的ws等)。我甚至设置了vim来显示红色的行。
我的问题是,使用git-diff时,我经常看到这样的情况:

-      else{ 
+      else{

即使我把git-diff着色了,我也看不出有什么区别(在那个特殊的情况下,我去掉了行尾的1个ws)。有什么方法可以让git-diff把ws着色为红色吗?(例如那些匹配/\s+$/ regexp的ws)。

o0lyfsai

o0lyfsai1#

使用with Git 2.11 (Q4 2016)及更高版本,您可以执行以下操作:

git config diff.wsErrorHighlight all

参见git diffgit config上的文档。
对于更早的版本,您可以设置color.diff.whitespace config设置,例如:

git config color.diff.whitespace "red reverse"

(我假设您已经将color.diffcolor.ui设置为auto,因为您说无论如何都能看到git diff的彩色补丁。)
如果您想微调以红色突出显示的空白错误类型,则可以更改core.whitespace,但blank-at-eol是默认启用的,因此对于您提到的示例,您可能不需要更改它。
一个可能引起混淆的原因是,在git diff的输出中,空白错误只在引入的行中突出显示,而不是在删除的行中突出显示。(* 更新:* 正如Paul Whittaker指出的in his answer,您应该对它进行up-vote:),您可以通过使用git diff -R反转diff的含义来查看这些错误。
您可以在git config man page中找到有关这些配置选项的更多文档
如果您不想使用-R kludge,可以使用diff man page中的 * 空白错误突出显示 * 选项。

  • -WS错误突出显示=
    用color.diff.whitespace指定的颜色突出显示指定行上的空白错误。是一个用逗号分隔的旧、新、上下文列表。如果没有提供此选项,则只突出显示新行中的空白错误。例如,--ws-error-highlight = new,old突出显示删除行和添加行上的空白错误。all可用作旧、新、上下文的简写。
    git diff --ws-error-highlight=new,old <file>

    git diff --ws-error-highlight=all <file>
    在2.11之前的版本中,除了使用别名之外,没有办法永久打开此功能并将其存储在config中:
    git config alias.df 'diff --ws-error-highlight=all'
    现在您可以使用:
    git df <file>
    以红色显示更改。
z9smfwbn

z9smfwbn2#

使用git diff -R将删除的行转换为添加的行。然后尾随的空白将被突出显示。
(This假设您已经根据Mark答案中的颜色设置启用了空白突出显示。该方法的功劳来自Junio在http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal-with-git-diff-td5653205.html上的帖子。)
例如,当把一个文件从DOS的行尾转换到Unix时,git diff -R可以清楚地显示行尾出现的^M字符(dis),如果没有-R(也没有-w等),它显示整个文件已经改变,但没有显示如何改变。

qhhrdooz

qhhrdooz3#

使用git diff --color | less -R-R使颜色控制代码更人性化。
然后您可以使用less的正则表达式搜索,例如:

/[[:space:]]+$
wljmcqd8

wljmcqd84#

对于懒惰的答案浏览者,只需运行:

git config --global diff.wsErrorHighlight all

然后git diff也会突出显示删除行中的尾随空格。

e5njpo68

e5njpo685#

我的git diff版本似乎已经做到了这一点-我有git1.7.4.1并设置了color.ui = auto

t40tm48m

t40tm48m6#

上面提到的命令也可以作为选项包含在gitconfig文件中,即代替

git config ....

将相应的选项添加到例如~/.gitconfig

[diff]
    wsErrorHighlight = all

[color]
    ui = auto

上面的两个选项应该可以解决这个问题。2我测试的最早的git版本是1.7,但应该也可以在之后的任何版本中使用。3在最近的git版本中,“[color]”选项默认设置为“auto”。

相关问题