diff-so-fancy – so-fancy
让 diff 更易读,提升代码质量,加速缺陷检测。🎉
关键指标一览
主题标签
README 详细介绍
🎩 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
!diff-highlight vs 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
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
<code class="ra0-md-code">next</code> 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