git diff – show me line ending changes?
How do I get
git diff to show me what this change actually was?
- Dealing with EOL characters in Cygwin Git and Git for Windows accessing the same repository
- git ignore line endings
- How to preserve line endings when extracting git commit messages in a bash script?
- On git line-endings again
- how to config git repo so that all files are stored with line-ending LF ( not CFLF ) ?
- Definitive recommendation for git autocrlf settings
5 Solutions collect form web for “git diff – show me line ending changes?”
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.
git diff --ws-error-highlight=new,old
highlights whitespace diffs in changed lines.
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 added whitespace in
Alternatively, as suggested by Alex
git diff --color --ws-error-highlight=new,old
highlights all whitespace changes at the ends of lines.
A graphical diff tool will show you the change better — try
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.
You can see line-ending difference with the following command.
git diff | cat -v
“^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.