サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

Git で外部の diff ツールを使う方法のまとめ

はじめに

 Git で差分比較を行う際に、外部ツールを使う方法です。

 基本的にどんなツールも、すでに誰かが書いていることが多いので、リンクの紹介が主です。

 下記にない場合は 「git diff <ツール名>」 で検索すれば、何かしら情報が出てくるでしょう。

 Mac の場合は以下がいろいろ詳しいですね。

 参考:Mac で使える git mergetool をいろいろ試してみる - 準備編 | そんなこと覚えてない

 Merge のことはあんまり考えていません。個人開発が多いためか、あんまりコンフリクトしないので。

WinMerge を使用する方法

 参考:git の差分比較・マージを WinMerge で行う - Qiita

FileMerge.app(opendiff) を git difftool にする方法

 ターミナルで以下を実行します。

git config --global diff.tool opendiff
git config --global difftool.prompt false

 参考:Macでgitからマージツールを使う - Qiita

git difftool ではなく、git diff に設定する方法

 参考:git diffでOSX opendiffを起動する設定 · GitHub

Visual Studio Code を git difftool にする方法

 まず、code コマンドをインストールする必要があります。

MacのターミナルからVisual Studio Codeを開く方法 – Webrandum

 次に、以下を参考に .gitconfig を設定します。

 参考:外部エディタ/Diff ツール(差分表示ツール)としての Visual Studio Code (git と SourceTree で使ってみる) - Qiita

 上記には SourceTree の方法も載っています。

VimDiff を git difftool にする方法

 参考:git-diff と git-difftool を混同していた話 - ばうあーろぐ

P4Merge を git difftool にする方法

 Git 公式に解説があります。

 参考:外部のマージツールおよび diff ツール

git difftool ではなく git diff で Visual Studio Code を使いたい

 Mac & Visual Studio Code の例を書きます。opendiff だと、FileMerge をアプリケーションごと終了しなければならなかったので、ちょっと抵抗感がありました。Visual Studio Code はアプリケーション終了までする必要はなかったので、気に入りました。

 まずコマンドを作る必要があります。

 パスの通っているところ、例えば /usr/local/bin/ などに、コマンドを作ります。

sudo vi /usr/local/bin/codediff

 以下のような内容です。

#!/bin/sh
code --wait --diff "$2" "$5"

 実行権を付与します。

sudo chmod 755 /usr/local/bin/codediff

 作ったコマンドを .gitconfig に追加します。

git config --global diff.external codediff

 設定したら、動作を確認します。

git diff HEAD^