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 | lesscommand not foundへの対応
上記の設定を行った後だと「 diff-highlightなんてないよ」と怒られます
$ git diff package.json
diff-highlight | less: diff-highlight: command not founddiff-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-highlightHomebrewのバージョンが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