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,我们可以使其可见。