この記事は すごい広島 #6 での活動の一部です。
Git で branch をマージしたときにコンフリクトが起きると、これを解消する必要があります。テキストエディタでがんばるのはつらいこともありますよね。
そんなとき、マージするためのツールを使いたい場合もあります。
Git に git mergetool
というコマンドがあって、設定しておいたツールを起動することができます。
同様に 差分を見るのにGUIツールを使いたい場合などには git difftool
というコマンドもあります。
基本的には Mac で使えるものを紹介しますが、マルチプラットフォームのもあるので、別の環境でも使えるものもあります。
試したツール
- opendiff - 無料 Xcode に添付されている
- p4merge - 無料 Qt
- ediff(emacs) - 無料
- Kaleidoscope - 有料 - Cocoa アプリ (Mac Only)
- deltawalker - 有料 マルチプラットフォーム
- vimdiff2(vim) - 無料
- tkdiff - 無料 マルチプラットフォーム
- xxdiff - 無料 マルチプラットフォーム
- Araxis Merge - 有料 (Winあり)
いろいろ試すために用意したもの
いろいろ試すのになるべく楽をしたいので以下のリポジトリを用意しました。
このリポジトリを clone して $ bin/restart
を実行するとそのまま $ git mergetool
実行できる状態で、すでにコンフリクトした状態になるようにしています。
試すのに簡単にやりなおせる様にするのは大事だな、と最近感じています。
コンフリクトするファイルは
- sample.txt
- sample2.txt
です。
コンフリクトを解消する練習に利用してみてください。
試すツールを探した方法
$ git mergetool --tool-help
の実行結果に使えるツールの一覧が出てくるので、片っ端に調べました。
次に google さんに聞いて、いくつか探しました。
以下のツールは環境作るがめんどくさいので試しませんでした。
- meld
- gvimdiff2
meld は GTK がいるので試してませんでした。
gvimdiff2 は 実質 vimdiff2 と同じなので試しませんでした。
各ツールの詳細に続く
まとめ
一通り試した感想を。
Emacs や Vim を使いなれているのであれば、 ediff,vimdiff2 が第一候補になるでしょう。
お金があるなら Kaleidscope が表示が綺麗でよさそうです。 デザイナーさんに薦めるならこれが一番だと思います。
フリーのGUIツールでは p4merge がよさそうでした。