git show draws file names in a box whose width follows the file name, which looks ragged across a commit touching many files. Setting this option to ruler restores the full width ruler. Default is box, so nothing changes unless the option is set. Documented in the README and the man page. Closes #522.
4.6 KiB
🎩 diff-so-fancy

diff-so-fancy makes your diffs human-readable instead of machine-readable. This helps improve code quality and helps you spot defects faster.
🖼️ Screenshot
Vanilla git diff vs git and diff-so-fancy
📦 Install
Simply copy the diff-so-fancy script from the latest Github release into your $PATH and you're done. Alternately to test development features you can clone this repo and then put the diff-so-fancy script (symlink will work) into 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, Fedora, in the Arch extra repo, and as 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' repositories/issue trackers where applicable.
✨ Usage
Git
Configure git to use diff-so-fancy for all diff output:
git config --global core.pager "diff-so-fancy | less --tabs=4 -RF"
git config --global interactive.diffFilter "diff-so-fancy --patch"
Diff
Use -u with diff for unified output, and pipe the output to diff-so-fancy:
diff -u file_a file_b | diff-so-fancy
We also support recursive mode with -r or --recursive
diff --recursive -u /path/folder_a /path/folder_b | diff-so-fancy
⚒️ Options
markEmptyLines
Colorize the first block of an empty line. (Default: true)
git config --bool --global diff-so-fancy.markEmptyLines false
changeHunkIndicators
Simplify Git header chunks to a human readable format. (Default: true)
git config --bool --global diff-so-fancy.changeHunkIndicators false
stripLeadingSymbols
Remove the + or - symbols at start of each diff line. (Default: true)
git config --bool --global diff-so-fancy.stripLeadingSymbols false
useUnicodeRuler
Use Unicode to draw the ruler lines. Setting this to false will use ASCII instead. (Default: true)
git config --bool --global diff-so-fancy.useUnicodeRuler false
rulerWidth
rulerWidth sets the width of the ruler lines. (Default: screen width)
git config --global diff-so-fancy.rulerWidth 80
fileNameRulerShape
Shape of the ruler drawn around file names in git show output. Set this to
ruler to use full width ruler lines instead of boxes. (Default: box)
git config --global diff-so-fancy.fileNameRulerShape ruler
shortHeaders
Simplify the header information to a single line for filename and line number. (Default false)
git config --global diff-so-fancy.shortHeaders true
semIntegration
Include the summary from sem in the header for each changed file. (Default false)
git config --global diff-so-fancy.semIntegration true
👨 The diff-so-fancy team
| Person | Role |
|---|---|
| @scottchiefbaker | Project lead |
| @OJFord | Bug triage |
| @GenieTim | Travis OSX fixes |
| @AOS | Debian packager |
| @Stevemao/@Paul Irish | NPM release team |
🧬 Contributing
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.
Other documentation
🔃 Alternatives
- Delta
- Lazygit with diff-so-fancy integration
- difftastic
🏛️ License
MIT
