LoginSignup
0
2

More than 5 years have passed since last update.

cygwin環境下でgit difftoolに「WinMerge」を使用する

Last updated at Posted at 2016-12-28

git difftoolの際に外部diffツールを使用する方法はググればたくさん見つかりますが、どうにもうまくいかなかったのでその解決方法をまとめます。

ちなみにうまくいかなかった原因はwindows向けのGitbashではなくcygwin環境下にあるbashを使用しているので、パスがうまく解決できなかったからだと思います。

.gitconfigの設定

ググって色々見つかる情報と何が違うかというと、cygpathコマンドを経由していること。

.gitconfig
[diff]
    tool = WinMergeU
    guitool = WinMergeU
[difftool "WinMerge"]
    cmd = 'D:/WinMerge/WinMergeU.exe' -f '*.*' -e -u -dl 'WorkTree' -dr 'Repository' -wr \"`cygpath -w $REMOTE`\" \"`cygpath -w $LOCAL`\" 
[alias]
        windiff = difftool -y -d -t WinMerge

オプションなどについて解説

  • [diff][difftool]
    おそらく[difftool][diff]セクション内に記載したtoolの具体的な設定として機能する。今回の例だとWinMergeというaliasを設定しているのだと思われる。
  • WinMerge起動時のオプション
    f:フィルタ。全ファイルを対象
    e:escで閉じるを有効
    r:再帰
    u:「最近使用した・・・」の履歴にパス情報を追加しない
    dl:左側タイトルバー。作業ツリーとわかる様な名称を自由に設定する
    dr:右側タイトルバー。リポジトリに登録されているソースとわかるような名称を自由に設定する
    wr:右側を読み取り専用。左側を作業ツリーとするので右側を編集することはありえない
    Alt+←等の操作で修正対象を間違えることのないようにこの設定を入れています。
    $LOCAL,$REMOTE:リポジトリに登録されているソースとインデックス領域にあるソースを示す定数??
    git difftool --help | grep '\$'を見たがいまいちピンとこない。。。
  • aliasについて
    y:起動しますか?にyesで答える
    d:ディレクトリ単位で
    t:外部ツール使用
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2