Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/so-fancy/diff-so-fancy
Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:
https://github.com/so-fancy/diff-so-fancy
diff diff-highlight diffs fancy git hacktoberfest
Last synced: 3 days ago
JSON representation
Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:
- Host: GitHub
- URL: https://github.com/so-fancy/diff-so-fancy
- Owner: so-fancy
- License: mit
- Created: 2016-02-04T11:32:08.000Z (almost 9 years ago)
- Default Branch: next
- Last Pushed: 2024-09-18T20:56:17.000Z (3 months ago)
- Last Synced: 2024-11-18T07:48:27.889Z (24 days ago)
- Topics: diff, diff-highlight, diffs, fancy, git, hacktoberfest
- Language: Perl
- Homepage:
- Size: 636 KB
- Stars: 17,383
- Watchers: 116
- Forks: 335
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- Changelog: history.md
- License: LICENSE
Awesome Lists containing this project
- awesome - diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: (Perl)
- awesomeLibrary - diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. 🎉 (语言资源库 / tools)
- Awesome-GitHub-Repo - diff-so-fancy - 升级版的 diff 工具。[<img src="https://tva1.sinaimg.cn/large/008i3skNly1gxlhtmg11mj305k05k746.jpg" alt="微信" width="18px" height="18px" />](https://mp.weixin.qq.com/s?__biz=MzUxNjg4NDEzNA%3D%3D&chksm=f9a1d521ced65c373d8970ddb8789ae7217e70c33981b00b7cdd6e4a13e528a9cba6509e1aad&idx=1&mid=2247485160&scene=21&sn=8c3ccfa18af516589f226bef3e8335d3#wechat_redirect) (开源工具 / 命令行工具)
- my-awesome-github-stars - so-fancy/diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: (Perl)
- awesome-starred-test - so-fancy/diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: (Perl)
- awesome-github-repos - so-fancy/diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: (Perl)
- awesome-diff-tools - diff-so-fancy - Pager for (git) diff, changes colors and highlights inline changes, various options to customize output format. (Source Code / Diff Enhancers)
- awesome-list - diff-so-fancy - lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: | so-fancy | 14570 | (Perl)
- awesomeness - diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. 🎉 (GitShit)
- awesome-cli - diff-so-fancy - Good-lookin' diffs with diff-highlight and more. (Lovely Commands)
- starred-awesome - diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: (Perl)
- StarryDivineSky - so-fancy/diff-so-fancy - so-fancy 努力使您的差异具有人类可读性,而不是机器可读性。这有助于提高代码质量,并帮助您更快地发现缺陷。 (终端 / 网络服务_其他)
- jimsghstars - so-fancy/diff-so-fancy - Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada: (Perl)
README
# diff-so-fancy [![Circle CI build](https://circleci.com/gh/so-fancy/diff-so-fancy.svg?style=shield)](https://circleci.com/gh/so-fancy/diff-so-fancy) [![TravisCI build](https://travis-ci.org/so-fancy/diff-so-fancy.svg?branch=master)](https://travis-ci.org/so-fancy/diff-so-fancy) [![AppVeyor build](https://ci.appveyor.com/api/projects/status/github/so-fancy/diff-so-fancy?branch=master&svg=true)](https://ci.appveyor.com/project/stevemao/diff-so-fancy/branch/master)
`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.
## Screenshot
Vanilla `git diff` vs `git` and `diff-so-fancy`
![diff-highlight vs diff-so-fancy](diff-so-fancy.png)
## Install
Simply copy the `diff-so-fancy` script from the latest 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.
If you are using a ZSH framework like [zgenom](https://github.com/jandamm/zgenom) or [oh-my-zsh](https://ohmyz.sh), refer to [Zsh plugin support for diff-so-fancy](pro-tips.md) for detailed installation instructions.
`diff-so-fancy` is also available from the [NPM registry](https://www.npmjs.com/package/diff-so-fancy), [brew](https://formulae.brew.sh/formula/diff-so-fancy), as a package on [Nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/version-management/diff-so-fancy/default.nix), [Fedora](https://packages.fedoraproject.org/pkgs/diff-so-fancy/diff-so-fancy/), in the [Arch extra repo](https://archlinux.org/packages/extra/any/diff-so-fancy/), and as [ppa:aos for Debian/Ubuntu Linux](https://github.com/aos/dsf-debian).
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.
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.**Note:** Windows users may need to install [MinGW](https://sourceforge.net/projects/mingw/files/) or the [Windows subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
## Usage
### With git
Configure git to use `diff-so-fancy` for all diff output:
```shell
git config --global core.pager "diff-so-fancy | less --tabs=4 -RF"
git config --global interactive.diffFilter "diff-so-fancy --patch"
```### Improved colors for the highlighted bits
The default Git colors are not optimal. The colors used for the screenshot above were:
```shell
git config --global color.ui truegit 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"
```### With diff
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
```It also supports the recursive mode of diff with `-r` or `--recursive` as **first argument**
```shell
diff -r -u folder_a folder_b | diff-so-fancy
``````shell
diff --recursive -u folder_a folder_b | diff-so-fancy
```
## Options### markEmptyLines
Should the first block of an empty line be colored. (Default: true)
```shell
git config --bool --global diff-so-fancy.markEmptyLines false
```### changeHunkIndicators
Simplify git header chunks to a more human readable format. (Default: true)
```shell
git config --bool --global diff-so-fancy.changeHunkIndicators false
```### stripLeadingSymbols
Should the pesky `+` or `-` at line-start be removed. (Default: true)
```shell
git config --bool --global diff-so-fancy.stripLeadingSymbols false
```### useUnicodeRuler
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
```### rulerWidth
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 80
```## 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](https://github.com/so-fancy/diff-so-fancy/tree/next). We are also looking for any feedback or ideas on how to make `diff-so-fancy` even *fancier*.
### Other documentation
* [Pro-tips on advanced usage](pro-tips.md)
* [Reporting Bugs](reporting-bugs.md)
* [Hacking and Testing](hacking-and-testing.md)
* [History](history.md)## Alternatives
* [Delta](https://github.com/dandavison/delta)
* [Lazygit](https://github.com/jesseduffield/lazygit) with diff-so-fancy [integration](https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md#diff-so-fancy)## License
MIT