关于代码格式,我有点纯粹:)。我经常删除不必要的空格(只有 ws 的行、行尾的 ws 等)。我什至已经设置 vim 来显示那种颜色为红色的线条。
我的问题是使用 git-diff 我经常看到这样的东西:
- else{ + else{
即使我有 git-diff 彩色,我也看不出区别(在那种特殊情况下,我在行尾删除了 1 ws)。有没有办法告诉 git-diff 显示 ws 着色为红色?(例如与 /\s+$/ 正则表达式匹配的那些)。
使用Git 2.11(2016 年第四季度)及之后,您可以执行以下操作:
git config diff.wsErrorHighlight all
请参阅doc ongit diff和ongit config。
git diff
git config
对于早于此的版本,您可以设置color.diff.whitespace配置设置,例如:
color.diff.whitespace
git config color.diff.whitespace "red reverse"
(我假设您已经拥有color.diff或color.ui设置为,auto因为您说git diff无论如何您都会看到彩色补丁。)
color.diff
color.ui
auto
如果您想微调以红色突出显示的空白错误的类型,您可以更改core.whitespace,但blank-at- eol默认情况下启用,因此您可能不需要为您提到的示例更改它。
core.whitespace
blank-at- eol
一个可能的混淆来源是,在 的输出中git diff,空白错误仅在引入的行中突出显示,而不是在被删除的行中突出显示。( 更新:正如 Paul Whittaker 在他的回答中指出的那样,你应该投票赞成:),你可以通过用git diff -R.
git diff -R
用于git diff -R将删除的行变为添加的行。然后尾随空格将突出显示。
(这假设您已经启用了空白突出显示,根据 Mark 回答中的颜色设置。此方法的功劳来自 Junio 在http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal-的帖子与-git-diff-td5653205.html。)
例如,当将文件从 DOS 行尾转换为 Unix 时,git diff -R清楚地显示了^M出现在行尾的字符 (dis)。没有-R(也没有-w等)它表明整个文件已更改,但没有显示如何更改。
^M
-R
-w
您可以在git config 手册页中找到有关这些配置选项的更多文档
如果您不想使用 kludge,-R您可以使用diff 手册页中的 WhiteSpace Error Highlight 选项。
--ws-error-highlight= 以 color.diff.whitespace 指定的颜色突出显示由 指定的行上的空白错误。是一个逗号分隔的旧、新、上下文列表。如果未给出此选项,则仅突出显示新行中的空白错误。例如 –ws-error- highlight=new,old 突出显示删除行和添加行上的空白错误。all 可以用作旧、新、上下文的简写。
--ws-error-highlight=
以 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 的版本,除了使用别名之外,没有办法永久打开它并将其存储在配置中:
git config alias.df 'diff --ws-error-highlight=all'
现在您可以使用:
git df <file>
以红色查看变化。