git diff - 告诉我行结束的变化?

时间:2010-10-13 03:52:29

标签: git line-endings git-diff

我的编辑器正在更改源文件的行结尾。当我执行git diff时,我会看到同一行两次 - 一次使用-,一次使用+ - 没有明显差异。

如何让git diff向我展示这种变化究竟是什么?

5 个答案:

答案 0 :(得分:54)

首先,确保您使用彩色输出(例如使用git diff --color)并且您已启用空白高亮显示(例如)

git config color.diff.whitespace "red reverse"

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

即可
git diff -R

将空格放在比较的“添加”一侧,然后突出显示。

有关详细信息,请参阅this SO question上的答案。

答案 1 :(得分:20)

您可以使用以下命令查看行结尾差异。

git diff | cat -v

然后为CRLF(DOS)结束打印“^ M”,没有用于LF(Unix)结束。

显然git diff正在做正确的事情,为CRLF结束打印CR和LF字符。 但由于CR被控制台占用,我们无法看到它。通过使用cat -v,我们可以使它可见。

答案 2 :(得分:14)

查看空格更改的一种方法是逐个字符地执行#34;字差异"与

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

这会突出显示行中的所有空格更改。移除的空格包含在[--]中,并在{++}中添加了空格。

或者,作为suggested by Alex

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

突出显示行的末端的所有空格更改。

答案 3 :(得分:8)

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

突出显示更改行中的空格差异。

答案 4 :(得分:5)

图形差异工具会更好地向您显示更改 - 尝试git difftool

使用meld,并设置首选项以显示空格。 (编辑 - >偏好设置 - >显示空白。)

其他图形工具可能有类似的选项 - @ Cotton的回答+评论告诉你如何用vimdiff做这个。