Gitのdiffの表示をより分かりやすく!diff-highlightを有効にする

2021.09.26
Gitのdiffの表示をより分かりやすく!diff-highlightを有効にする

gitのdiffをより見やすく出来るdiff-highlight



一般的なdiffに対し


diff-highlightを有効にすると

のように文字単位で違いを表示してくれるようになります!



GitHubも同じように表示してくれますね

検証した環境

1 git 2.33.0
2 brew 3.2.13

git-diffを使ってdiffを分かりやすく表示する

git-diffはgitコマンドに同梱されています

そのため、特別なインストールは不要。


gitconfigへの設定

gitコマンド使用時に使えるようにするため.gitconfigへ設定を追加します。


gitコマンド・.gitconfigの直接編集、どちらでも大丈夫です

$ git config --global pager.log "diff-highlight | less"
$ git config --global pager.show "diff-highlight | less"
$ git config --global pager.diff "diff-highlight | less"
~/.gitconfig
[pager]
    log = diff-highlight | less
    show = diff-highlight | less
    diff = diff-highlight | less

command not foundへの対応

上記の設定を行った後だと「 diff-highlightなんてないよ」と怒られます

$ git diff package.json
diff-highlight | less: diff-highlight: command not found



diff-highlightは/contrib/diff-highlightというフォルダ内に存在していて、

github上だと以下のページ

git/contrib/diff-highlight at master · git/git


ここへのパスを通して上げる必要があります。



MacのHomebrew(ここでの私のバージョンは3.2.13でgitを追加している場合、

diff-highlightへのパスは以下になります。

/usr/local/share/git-core/contrib/diff-highlight/diff-highlight 

このコマンドがあるかを確認する場合はopenコマンド使ってFinderに表示すると分かりやすいですね

# diff-highlightコマンドが格納されているフォルダをFinderで開く
$ open /usr/local/share/git-core/contrib/diff-highlight/



パスの通し方は

  • シンボリックリンクを使う
  • zshなどのshにパスを通す

があります。

お好きな方どちらかを実行して下さい!



シンボリックリンク

diff-highlightコマンドを一般的にパスが通っている/usr/local/binにシンボリックリンクを貼ります。

$ ln -s /usr/local/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin

手軽に試したい場合はこちらが楽ですね



shにパスを通す

私はhomesickというライブラリを使って複数のMacでdotfileを共有しているのでこちらの方法にしました。


zshであれば.zshrc、bashであれば.bashrcに記載していきます

export PATH="$PATH:/usr/local/share/git-core/contrib/diff-highlight"



パスが通った事の確認

diff-highlight--help--versionが実行しても反応しないので、

シンプルに変更があるリポジトリフォルダでgit diffするのが早いです。


正常にパスが通っていれば「command not found」が表示されなくなり、

diff実行時の色が変わっています。


tigでもdiff-highlightを有効にする

tigのdiffでもdiff-highlightを有効にすることができます


設定は簡単で.tigrcに以下の1文を記載すればOKです

~/.tigrc
set diff-highlight = true

おすすめ