gitのdiffをより見やすく出来るdiff-highlight
!
一般的なdiffに対し

diff-highlight
を有効にすると

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

検証した環境
1 | git | 2.33.0 | |
2 | brew | 3.2.13 | 3.3.1だった場合も記載しました |
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"
[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のHomebrew3.2.13
)
diff-highlight
へのパスは以下になります。
/usr/local/share/git-core/contrib/diff-highlight/diff-highlight
Homebrewのバージョンが3.3.1でM1 Macの場合、gitのパスは以下になっていました。
/opt/homebrew/share/git-core/contrib/diff-highlight/diff-highlight
このコマンドがあるかを確認する場合はopen
コマンド使ってFinderに表示すると分かりやすいですね
# diff-highlightコマンドが格納されているフォルダをFinderで開く
$ open /usr/local/share/git-core/contrib/diff-highlight/
# brew v3.3.1でM1 Macの場合
$ open /opt/homebrew/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
# brew v3.3.1でM1 Macの場合
$ ln -s /opt/homebrew/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"
# brew v3.3.1でM1 Macの場合
export PATH="$PATH:/opt/homebrew/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です
set diff-highlight = true
