はじめに
今までgitのコンフリクトを解消するマージツールとしてvimdiffを使っていたが、diffchar.vimを使っても単語ごとの差分をうまく表示してくれないので、csvなどのマージの際にコンフリクトした箇所をわざわざ違うdiffツールを使って差分を確認するなどの面倒な作業が発生した。
そこで、単語ごとの差分を出してくれるマージツールを探すことにした。
WindowsであればWinMergeという有名なツールがあるが、Macだと意外とよいのが見つからない。ちなみに自分のPCのOSは以下。
macOS High Sierra 10.13.6
探してみたところ、DiffMergeというツールがよさそう。
ダウンロード
ダウンロードページから「OS X 10.6+ Installer (Intel)」をダウンロード。
あとはpkgファイルを開いてインストーラの指示に従うだけ。
gitの設定
マージツール設定
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd 'diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"'
git config --global mergetool.diffmerge.trustExitCode true
git config --global mergetool.keepBackup false
diffツール設定
こちらの設定はdiffにもDiffMergeを使いたい場合のみでOK。
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd 'diffmerge "$LOCAL" "$REMOTE"'
DiffMergeの日本語設定
デフォルトのままだと日本語が文字化けするので、以下を参考に文字コードを設定。
ソースコードの差分比較にDIFFMERGEを日本語対応して使ってみる
結果
単語の差分がちゃんとわかる!
あとは真ん中のビューに最終的に適応したい差分を取り込み、保存すればOK。