[Git]difftoolにdifftasticを設定して差分を見やすくする。

2022.12.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • gitのdifftoolコマンドを利用すれば内部で利用している差分ツールを使い分けることが可能です。
  • そこでdifftoolにdifftasticを利用できるように設定してgitのdiffをより見やすくする方法を記録いたします。

イメージ

  • 今回行う設定によって、以下のようにdifftoolコマンド利用時は「視覚的な差分表示・文字単位での色付け」が可能となります。

環境

  • mac OS Ventura 13.1
  • Homebrew 3.6.15

手順

difftasticインストール

  • 以下のコマンドでdifftasticをインストールします。
    • ※Mac以外のインストール方法はこちらをご参考ください。
brew install difftastic
  • 以下で存在確認及び操作感確認をします。
# 存在確認
type difft

# 操作感確認
# 新しくある「World」が太字になることを確認
difft <(echo "Hello") <(echo "Hello World")

gitconfigの設定

  • インストール後、gitのdifftoolに設定するためgitconfigを編集します。
  • 今回はlocalとしてgit管理のプロジェクトに設定するので、そのサンプルプロジェクトを以下で用意します。
    • ※globalに設定する場合はこちらをご参考に~/.gitconfigを編集してください。
    • ※コマンドで一時的に利用する場合はこちらをご参考ください。
# サンプルディレクトリ作成・移動
mkdir -p ~/difft-test
cd ~/difft-test

# git初期化
git init
  • 作成後、difft-test/.git/configファイルに以下を追記してください。
    • ※以下の1行目の「dif」を「diff」と書き換えてください。角括弧内にdiffと書くと記事上で認識されなかったため。
[dif]
  tool = difftastic
[difftool]
  prompt = false
[difftool "difftastic"]
  cmd = difft "$LOCAL" "$REMOTE"
[pager]
  difftool = true

設定確認

  • configへの追記後、反映されているか確認します。
  • 上記で作成したgitプロジェクトに以下で対象ファイルを作成してください。
# 対象ファイル作成(例: docker-compose.yml)
touch docker-compose.yml
  • 作成したdocker-compose.ymlの中身を例として以下にしてください。
version: '3.7'
services:
  sample:
    image: alpine 
    tty: true
  • 記述後、以下でファーストコミットします。
# ステージング
git add docker-compose.yml
# コミット
git commit -m "first commit"
  • コミット後、docker-compose.ymlの中身を以下の内容に変更してください。
version: '3.7'
services:
  sample:
    image: ubuntu 
    tty: true
  • 変更後、以下のdifftoolコマンドで反映されているか確認してください。
git difftool docker-compose.yml
  • 反映されていたら以下のような出力になります。

  • 確認後、通常のgit diffには影響していないことを確認します。
# 標準の出力形式
git diff docker-compose.yml
  • 以上です。

まとめ

  • difftasticを利用すればCUIで文字単位の差分表示が可能なので非常に便利です。
  • diffは普段から利用するため自分に合ったdiffツールを利用していこうと感じました。

参考