diff-so-fancy strives to make your diffs human readable instead of machine readable. This helps improve code quality and helps you spot defects faster.
Vanilla git diff vs git and diff-so-fancy
Installation is as simple as cloning this repo and then putting the diff-so-fancy script in to your $PATH. The lib/ directory will need to be kept relative to the core script.
diff-so-fancy is also available from the NPM registry, brew, as a package on Nix, in the Arch community repo, as ppa:aos for Debian/Ubuntu Linux, and as Fedora COPR repository.
Issues relating to packaging ('installation does not work', 'version is out of date', etc.) should be directed to those packages' own repositories/issue trackers where applicable.
Note: Windows users may need to install MinGW or the Windows subsystem for Linux.
Configure git to use diff-so-fancy for all diff output:
git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
git config --global interactive.diffFilter "diff-so-fancy --patch"The default Git colors are not optimal. The colors used for the screenshot above were:
git config --global color.ui true
git config --global color.diff-highlight.oldNormal "red bold"
git config --global color.diff-highlight.oldHighlight "red bold 52"
git config --global color.diff-highlight.newNormal "green bold"
git config --global color.diff-highlight.newHighlight "green bold 22"
git config --global color.diff.meta "11"
git config --global color.diff.frag "magenta bold"
git config --global color.diff.func "146 bold"
git config --global color.diff.commit "yellow bold"
git config --global color.diff.old "red bold"
git config --global color.diff.new "green bold"
git config --global color.diff.whitespace "red reverse"Use -u with diff for unified output, and pipe the output to diff-so-fancy:
diff -u file_a file_b | diff-so-fancy