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

Sto*_*nky 71 git line-endings git-diff

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

我该如何git diff告诉我实际上这个变化是什么?

Pau*_*ker 58

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

git config color.diff.whitespace "red reverse"
Run Code Online (Sandbox Code Playgroud)

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

git diff -R
Run Code Online (Sandbox Code Playgroud)

将空格放在比较的"添加"一侧,它会突出显示.

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


dro*_*7c2 26

您可以使用以下命令查看行结束差异.

git diff | cat -v
Run Code Online (Sandbox Code Playgroud)

然后打印"^ M"为CRLF(DOS)结束,没有任何LF(Unix)结束.

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


ntc*_*tc2 17

查看空格更改的一种方法是使用字符逐个字符"单词差异"

git diff --color --word-diff-regex=.
Run Code Online (Sandbox Code Playgroud)

这凸显了所有空白的变化随处可见线.除去空白被包裹在[--]和在添加空格{++}.

或者,正如Alex建议的那样

git diff --color --ws-error-highlight=new,old
Run Code Online (Sandbox Code Playgroud)

突出显示行末端的所有空白更改.


Ale*_*lex 8

git diff --ws-error-highlight=new,old
Run Code Online (Sandbox Code Playgroud)

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


bst*_*rre 5

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

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

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