关于代码格式化,我有点纯粹:)。我经常删除不必要的空格(只有ws的行,行末尾的ws等)。我甚至设置了vim来显示那种颜色为红色的线条。
我的问题是使用git-diff我经常会看到这样的东西:
- else{
+ else{
即使我有git-diff颜色,我也看不出差异(在特殊情况下,我在行尾删除了1个ws)。有没有办法告诉git-diff显示ws变成红色? (例如与/ \ s + $ / regexp匹配的那些)。
答案 0 :(得分:153)
您可能需要设置color.diff.whitespace配置设置,例如用:
git config color.diff.whitespace "red reverse"
(我假设您已将color.diff
或color.ui
设置为auto
,因为您说您无论如何都会看到来自git diff
的彩色补丁。)
如果要微调以红色突出显示的空白错误类型,则可以更改core.whitespace
,但默认情况下会启用blank-at-eol
,因此您可能不需要更改对于你提到的例子。
可能的混淆源是git diff
的输出中,空格错误仅在引入的行中突出显示,而不是在删除的行中突出显示。 (更新:正如保罗·惠特克指出in his answer,你应该投票:),你可以通过用git diff -R
扭转差异感来看到这些。)< / p>
如果您不想使用-R
kludge,可以使用diff man page中的 WhiteSpace错误突出显示选项。
- WS-错误高亮=
突出显示由color.diff.whitespace指定的颜色指定的行上的空白错误。 是逗号 旧的,新的,上下文的分隔列表。如果没有给出此选项, 只突出显示新行中的空白错误。例如。 --ws-error-highlight = new,old突出显示已删除和添加的行上的空白错误。所有都可以作为一个简写 旧,新,上下文。
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>
以红色查看更改。
请注意with Git 2.11 (Q4 2016),此别名可能会替换为:
git config diff.wsErrorHighlight all
答案 1 :(得分:126)
使用git diff -R
将删除的行转换为添加的行。然后将突出显示尾随空格。
(这假设您已经启用了空白高亮显示,根据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
等),它会显示整个文件已更改,但未显示如何。
答案 2 :(得分:9)
使用git diff --color | less -R
。 -R
使颜色控制代码符合人性化。
然后你可以使用less
的正则表达式搜索,例如
/[[:space:]]+$
答案 3 :(得分:2)
对于懒惰的答案撇渣器,只需运行:
git config --global diff.wsErrorHighlight all
然后 git diff
也会突出显示删除行中的尾随空格。
答案 4 :(得分:1)
我的git diff
版本似乎已经这样做了 - 我有git 1.7.4.1并设置了color.ui = auto
。