Good-lookin' diffs with diff-highlight and more
npm install diff-so-fancydiff-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
!diff-highlight vs 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, and as a package on Nix, in the Arch community repo, and ppa:aos for Debian/Ubuntu Linux.
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:
``shell`
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:
`shell
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:
`shell`
diff -u file_a file_b | diff-so-fancy
Should the first block of an empty line be colored. (Default: true)
`shell`
git config --bool --global diff-so-fancy.markEmptyLines false
Simplify git header chunks to a more human readable format. (Default: true)
`shell`
git config --bool --global diff-so-fancy.changeHunkIndicators false
Should the pesky + or - at line-start be removed. (Default: true)
`shell`
git config --bool --global diff-so-fancy.stripLeadingSymbols false
By default, the separator for the file header uses Unicode line-drawing characters. If this is causing output errors on your terminal, set this to false to use ASCII characters instead. (Default: true)
`shell`
git config --bool --global diff-so-fancy.useUnicodeRuler false
By default, the separator for the file header spans the full width of the terminal. Use this setting to set the width of the file header manually.
`shell`
git config --global diff-so-fancy.rulerWidth 47 # git log's commit header width
| Person | Role |
| --------------------- | ---------------- |
| @scottchiefbaker | Project lead |
| @OJFord | Bug triage |
| @GenieTim | Travis OSX fixes |
| @AOS | Debian packager |
| @Stevemao/@Paul Irish | NPM release team |
Pull requests are quite welcome, and should target the next branch. We are also looking for any feedback or ideas on how to make diff-so-fancy` even fancier.
* Pro-tips on advanced usage
* Reporting Bugs
* Hacking and Testing
* History
* https://github.com/dandavison/delta
MIT