关于代码格式,我是一个纯粹主义者:)。我经常删除不必要白色(只有ws的行,行末的ws等)。我甚至设置了vim来显示红色的行。我的问题是,使用git-diff时,我经常看到这样的情况:
- else{ + else{
即使我把git-diff着色了,我也看不出有什么区别(在那个特殊的情况下,我去掉了行尾的1个ws)。有什么方法可以让git-diff把ws着色为红色吗?(例如那些匹配/\s+$/ regexp的ws)。
o0lyfsai1#
使用with Git 2.11 (Q4 2016)及更高版本,您可以执行以下操作:
git config diff.wsErrorHighlight all
参见git diff和git config上的文档。对于更早的版本,您可以设置color.diff.whitespace config设置,例如:
git diff
git config
color.diff.whitespace
git config color.diff.whitespace "red reverse"
(我假设您已经将color.diff或color.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中的 * 空白错误突出显示 * 选项。
color.diff
color.ui
auto
core.whitespace
blank-at-eol
git diff -R
-R
git diff --ws-error-highlight=new,old <file>
git diff --ws-error-highlight=all <file>
git config alias.df 'diff --ws-error-highlight=all'
git df <file>
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等),它显示整个文件已经改变,但没有显示如何改变。
^M
-w
qhhrdooz3#
使用git diff --color | less -R。-R使颜色控制代码更人性化。然后您可以使用less的正则表达式搜索,例如:
git diff --color | less -R
less
/[[:space:]]+$
wljmcqd84#
对于懒惰的答案浏览者,只需运行:
git config --global diff.wsErrorHighlight all
然后git diff也会突出显示删除行中的尾随空格。
e5njpo685#
我的git diff版本似乎已经做到了这一点-我有git1.7.4.1并设置了color.ui = auto。
color.ui = auto
t40tm48m6#
上面提到的命令也可以作为选项包含在gitconfig文件中,即代替
git config ....
将相应的选项添加到例如~/.gitconfig
[diff] wsErrorHighlight = all [color] ui = auto
上面的两个选项应该可以解决这个问题。2我测试的最早的git版本是1.7,但应该也可以在之后的任何版本中使用。3在最近的git版本中,“[color]”选项默认设置为“auto”。
6条答案
按热度按时间o0lyfsai1#
使用with Git 2.11 (Q4 2016)及更高版本,您可以执行以下操作:
参见
git diff
和git config
上的文档。对于更早的版本,您可以设置
color.diff.whitespace
config设置,例如:(我假设您已经将
color.diff
或color.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中的 * 空白错误突出显示 * 选项。用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>
以红色显示更改。
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
等),它显示整个文件已经改变,但没有显示如何改变。qhhrdooz3#
使用
git diff --color | less -R
。-R
使颜色控制代码更人性化。然后您可以使用
less
的正则表达式搜索,例如:wljmcqd84#
对于懒惰的答案浏览者,只需运行:
然后
git diff
也会突出显示删除行中的尾随空格。e5njpo685#
我的
git diff
版本似乎已经做到了这一点-我有git1.7.4.1并设置了color.ui = auto
。t40tm48m6#
上面提到的命令也可以作为选项包含在gitconfig文件中,即代替
将相应的选项添加到例如~/.gitconfig
上面的两个选项应该可以解决这个问题。2我测试的最早的git版本是1.7,但应该也可以在之后的任何版本中使用。3在最近的git版本中,“[color]”选项默认设置为“auto”。