关于代码格式,我有点纯粹:)。我经常删除不必要的空格(只有ws的行,行尾的ws等)。我什至设置了vim来显示颜色为红色的线条。
我的问题是,使用git-diff时,我经常会看到以下内容:
- else{
+ else{
即使我使用git-diff着色,也看不到差异(在那种特殊情况下,我在行尾删除了1 ws)。有什么办法告诉git-diff显示ws变成红色吗?(例如,与/ \ s + $ / regexp匹配的那些)。
关于代码格式,我有点纯粹:)。我经常删除不必要的空格(只有ws的行,行尾的ws等)。我什至设置了vim来显示颜色为红色的线条。
我的问题是,使用git-diff时,我经常会看到以下内容:
- else{
+ else{
即使我使用git-diff着色,也看不到差异(在那种特殊情况下,我在行尾删除了1 ws)。有什么办法告诉git-diff显示ws变成红色吗?(例如,与/ \ s + $ / regexp匹配的那些)。
Answers:
您可能需要设置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 在他的回答中指出的那样,您应该投票赞成:),您可以通过用反转diff的含义来看到这些git diff -R
。)
您可以在git config手册页中找到有关这些配置选项的更多文档。
如果您不想-R
使用kludge,则可以使用diff手册页中的WhiteSpace Error Highlight选项。
--ws-error-highlight =
在由color.diff.whitespace指定的颜色指定的行上突出显示空白错误。是用逗号分隔的旧的,新的上下文列表。如果未提供此选项,则仅突出显示新行中的空白错误。例如--ws-error-highlight = new,old突出显示已删除和已添加行上的空白错误。所有这些都可以用作旧,新,上下文的简写。
git diff --ws-error-highlight=new,old <file>
要么
git diff --ws-error-highlight=all <file>
除了使用别名,我不知道一种永久将其打开并将其存储在config中的方法:
git config alias.df 'diff --ws-error-highlight=all'
现在您可以使用:
git df <file>
以红色查看更改。
请注意,在Git 2.11(2016年第四季度)中,此别名可能替换为:
git config diff.wsErrorHighlight all
git diff -R
git config diff.wsErrorHighlight all
。使用git config --global [...]
使全球变化(即影响所有回购)。
使用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
),它表明整个文件已更改,但不显示如何更改。
git diff | cat -A | less -S
如果您不顾一切也可以这样做,但是除了回车以外,cat
还将显示所有颜色高亮显示转义码。
cat -A
不能携带。在BSD cat上,没有这样的选项。请cat -vet
改用。