高亮 git diff 的小工具
来自: https://github.com/so-fancy/diff-so-fancy
diff-so-fancy
diff-so-fancy builds on the good-lookin' output ofgit contrib'sdiff-highlight to upgrade your diffs' appearances.
- Output will not be in standard patch format, but will be readable.
- No pesky + or - at line-start, making for easier copy-paste.
Screenshot
git diff vs git diff --color | diff-so-fancy
Usage
You can do one-off fanciness:
git diff --color | diff-so-fancy
But, you'll probably want to fancify all your diffs. Run this so git diff (and git show ) will use it:
git config --global pager.diff "diff-so-fancy | less --tabs=1,5 -RFX" git config --global pager.show "diff-so-fancy | less --tabs=1,5 -RFX"
However, if you'd prefer to do the fanciness on-demand with git dsf , drop an alias in your ~/.gitconfig :
dsf = "!git diff --color $@ | diff-so-fancy"
Install
For convenience, the recommended installation is via NPM. If you'd prefer, you may choose to do amanual installationinstead.
npm install -g diff-so-fancy
This will install and link the diff-so-fancy and diff-highlight scripts.
On Mac, you should use Homebrew:
brew install diff-so-fancy
This will take care of the gnu-sed dependency you would otherwise need to install before using npm or manual installation, and installs both scripts as above.
Improved colors for the highlighted bits
diff-highlight has default colors that are arguably a little nasty. They'll work fine, but you can try some fancier colors:
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"
You may also want to configuregeneral diff colors.
Manual install
If you want, you can choose to install manually:
- Grab the two scripts ( diff-highlight and diff-so-fancy ) via either downloading or cloning the repo.
- If you download diff-highlight from the official git repo, give it a chmod +x .
- Place them in a location that is in your PATH directly or with symlinks.
- Set up the git pager.diff and pager.show configs, as described above.
Note: The diff-highlight dependency is an official git-contrib script , duplicated here for convenience. If you prefer less fancy in your diff, you also use diff-highlight on it's own .
Opting-out
Sometimes you will want to bypass diff-so-fancy. Use --no-pager for that:
git --no-pager diff
History
diff-so-fancy started as a commit in paulirish's dotfiles , which grew into astandalone script. Later,@stevemao brought it into itsown repo (here), and gave it the room to mature. It's quickly grown into a widely collaborative project .
Contributing
Pull requests quite welcome, along with any feedback or ideas.
Hacking
# fork and clone the diff-so-fancy repo. git clone https://github.com/so-fancy/diff-so-fancy/ && cd diff-so-fancy # test a saved diff against your local version cat test/fixtures/ls-function.diff | ./diff-so-fancy # setup symlinks to use local copy npm link cd ~/projects/catfabulator && git diff
Running tests
You'll need to installbats, the Bash automated testing system. It's also available as brew install bats
git submodule update --init # pull in the assertion library, bats-assert # Run the test suite once: bats test # Run it on every change with `entr` brew install entr ls --color=never diff-so-fancy test/*.bats | entr bats test
License
MIT