git diff – 显示行结束改变?

我的编辑正在改变我的源文件的行尾。 当我做git diff ,我看到同一行两次 – 一次用-和一次用+ – 没有明显的区别。

我如何得到git diff来向我展示这个变化实际上是什么?

首先,确保你使用的是彩色输出(比如用git diff --color ),并且你已经启用了空白(例如)

 git config color.diff.whitespace "red reverse" 

但是,这可能不适用于所有情况,因为git似乎不会突出显示删除行的尾部空白。 要查看您删除的空白,只需使用

 git diff -R 

将空白放在比较的“添加”一侧,在那里突出显示。

有关更多详细信息,请参阅此SO问题的答案。

 git diff --ws-error-highlight=new,old 

突出显示空格在变化的行中不一致。

查看空白变化的一种方法是逐个字符的“文字差异”

 git diff --color --word-diff-regex=. 

这突出显示了所有行中的所有空白变化。 删除的空格被包裹在[--]并在{++}添加了空格。

另外,如亚历克斯所build议的

 git diff --color --ws-error-highlight=new,old 

突出显示行尾的所有空白变化。

一个graphics化的差异工具将更好地显示你的变化 – 尝试git difftool

使用meld ,并设置首选项显示空白。 (编辑 – >首选项 – >显示空白。)

其他graphics工具可能有类似的选项 – @棉花的答案+评论告诉你如何用vimdiff做到这一点。

您可以看到与下面的命令行结束差异。

 git diff | cat -v 

然后在CRLF(DOS)结束处打印“^ M”,LF(Unix)结束。

显然,git diff正在做正确的事情,为CRLF结尾打印CR和LF字符。 但是因为控制台消耗了CR,所以我们看不到它。 通过使用cat -v,我们可以使其可见。