100

我的编辑器正在更改我的源文件的行尾。当我这样做时git diff,我看到同一条线两次——一次-和一次+——没有明显的区别。

我如何才能git diff向我展示这种变化实际上是什么?

4

5 回答 5

70

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

git config color.diff.whitespace "red reverse"

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

git diff -R

将空格放在比较的“添加”侧,它确实被突出显示。

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

于 2012-07-16T17:42:49.410 回答
46

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

git diff | cat -v

然后为 CRLF (DOS) 结尾打印“^M”,对于 LF (Unix) 结尾不打印。

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

于 2016-09-15T02:51:46.133 回答
33

查看空格变化的一种方法是逐个字符地进行“单词差异”

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

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

或者,正如亚历克斯所建议的那样

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

突出显示行尾的所有空白更改。

于 2016-04-13T16:57:26.463 回答
19
git diff --ws-error-highlight=new,old

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

于 2016-04-10T23:23:22.500 回答
5

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

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

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

于 2010-10-13T17:04:02.923 回答