git diff - show me line ending changes?

怎甘沉沦 提交于 2019-11-26 12:19:51
Paul Whittaker

First, make sure you're using the coloured output (e.g. with git diff --color) and that you've enabled whitespace highlighting with (e.g.)

git config color.diff.whitespace "red reverse"

This might not work in all cases, however, as git doesn't appear to highlight trailing whitespace for removed lines. To see whitespace that you've deleted, simply use

git diff -R

to put the whitespace on the 'added' side of the comparison, where it does get highlighted.

For more detail, see the answers at this SO question.

You can see line-ending difference with the following command.

git diff | cat -v

Then "^M" is printed for CRLF (DOS) ending, nothing for LF (Unix) ending.

Apparently git diff is doing the right thing, printing CR and LF characters for CRLF ending. But because CR is consumed by the console, we cannot see it. By using cat -v, we can make it visible.

ntc2

One way to see whitespace changes is to do a character-by-character "word diff" with

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

This highlights all whitespace changes everywhere in lines. Removed whitespace is wrapped in [- and -] and added whitespace in {+ and +}.

Alternatively, as suggested by Alex

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

highlights all whitespace changes at the ends of lines.

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

highlights whitespace diffs in changed lines.

A graphical diff tool will show you the change better -- try git difftool.

Use meld, and set the preferences to show whitespace. (Edit -> Preferences -> Show Whitespace.)

Other graphical tools probably have similar options -- @Cotton's answer+comment tells you how to do this with vimdiff.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!