我的编辑器正在更改我的源文件的行尾。当我这样做时git diff
,我看到同一条线两次——一次-
和一次+
——没有明显的区别。
我如何才能git diff
向我展示这种变化实际上是什么?
我的编辑器正在更改我的源文件的行尾。当我这样做时git diff
,我看到同一条线两次——一次-
和一次+
——没有明显的区别。
我如何才能git diff
向我展示这种变化实际上是什么?
首先,确保您使用的是彩色输出(例如 with git diff --color
)并且您已经启用了空白突出显示(例如)
git config color.diff.whitespace "red reverse"
但是,这可能不适用于所有情况,因为git
似乎没有突出显示已删除行的尾随空格。要查看已删除的空格,只需使用
git diff -R
将空格放在比较的“添加”侧,它确实被突出显示。
您可以使用以下命令查看行尾差异。
git diff | cat -v
然后为 CRLF (DOS) 结尾打印“^M”,对于 LF (Unix) 结尾不打印。
显然 git diff 正在做正确的事情,为 CRLF 结尾打印 CR 和 LF 字符。但是因为 CR 被控制台消费了,所以我们看不到它。通过使用 cat -v,我们可以使其可见。
查看空格变化的一种方法是逐个字符地进行“单词差异”
git diff --color --word-diff-regex=.
这会突出显示行中各处的所有空白更改。删除的空格包含在[-
and中,并在and中-]
添加了空格。{+
+}
或者,正如亚历克斯所建议的那样
git diff --color --ws-error-highlight=new,old
突出显示行尾的所有空白更改。
git diff --ws-error-highlight=new,old
突出显示更改行中的空白差异。
图形差异工具将更好地向您显示更改 - 尝试git difftool
。
使用meld,并设置首选项以显示空白。(编辑 -> 首选项 -> 显示空白。)
其他图形工具可能有类似的选项——@Cotton 的回答+评论告诉你如何用 vimdiff 做到这一点。