I like the output formatting of git diff
. The color and the +
/-
representation of changes between lines is easier to read than GNU di
This is what I suggest and it's pretty close
diff -u FILE1 FILE2 | colordiff | less -R
colordiff
: You'll have to install this
brew install colordiff
on my Mac.port install colordiff
on some Macs.sudo apt-get install colordiff
on Debian or Ubuntu-R
: this tells Less to show colors instead of the raw codes.I ultimately used -w
because I didn't want to see whitespace diffs.
diff -w -u FILE1 FILE2 | colordiff | less -R
Edit: As suggested by @Ciprian Tomoiaga in the comment, you can make this a function and put it in your ~/.bashrc
file too.
function gdiff () { diff -u $@ | colordiff | less -R; }
GNU diff
has a --color
option since version 3.4 in late 2016 according to this answer on the Unix SE. That alongside -u
should be enough to mimic the output of git diff
:
diff -u --color=always file1 file2 | less -r
--color
must be always
when used in a pipe, auto
will turn off color in pipes.
I've only tried this with Git Bash on Windows, where less -R
would only color the first line of a hunk. less -r
fixed it for me in that case.