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

投稿日
/
更新日
Gitのdiffの表示をより分かりやすく!diff-highlightを有効にする

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



一般的なdiffに対し

一般的なdiff

diff-highlightを有効にすると

diff-highlight有効時のdiff

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



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

GitHubも同様にdiff-highlightのような表示がされる

検証した環境

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"
~/.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

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/
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するのが早いです。

diff-highlight有効時のdiff

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

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


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

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


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

~/.tigrc
set diff-highlight = true

tigでもdiff-highlightを有効にする
プロフィール画像
Yuki Takara
都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。