Cygwin で msysGit と Git を試してみました。どちらも単体でも問題なく動作し、gitk と git-gui も完璧に動作します。
さて、マージツールをどうやって設定すればいいのでしょうか? (Vimdiff は Cygwin でも動作しますが、できれば Windows を愛用している同僚のために、もう少しユーザーフレンドリーなものがほしいです。)
ベストアンサー1
Charles Baileyの回答に続いて、私が使用しているgitの設定を紹介します。p4マージ(無料のクロスプラットフォーム 3 ウェイ マージ ツール)。msys Git (Windows) インストールでテスト済み:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
または、Windows cmd.exe シェルの場合、2 行目は次のようになります。
git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
変更点(チャールズ・ベイリーと比較して):
- グローバル git 設定に追加されました。つまり、現在のプロジェクトだけでなくすべての git プロジェクトに有効です。
- カスタム ツール設定値は、「merge.[tool].cmd」ではなく、「mergetool.[tool].cmd」にあります (愚かな私は、git が存在しないツールについてエラーを出し続けている原因をトラブルシューティングするのに 1 時間費やしました)
- すべてのファイル名に二重引用符を追加し、スペースを含むファイルもマージ ツールで検出できるようにしました (Powershell の msys Git でこれをテストしました)
- デフォルトではPerforceはインストールディレクトリをPATHに追加するので、コマンドでp4mergeへのフルパスを指定する必要はありません。
ダウンロード:http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
編集(2014 年 2 月)
指摘したように@グレゴリー・パコシュ、 最新msys git現在、 p4merge を「ネイティブに」サポートしています( 1.8.5.2.msysgit.0でテスト済み)。
次のコマンドを実行すると、サポートされているツールのリストを表示できます。
git mergetool --tool-help
使用可能または有効なリストにp4merge が表示されるはずです。表示されない場合は、git を更新してください。
p4merge が使用可能としてリストされている場合は、 PATH内にあるため、 merge.tool を設定するだけで済みます。
git config --global merge.tool p4merge
有効としてリストされている場合は、 merge.toolに加えてmergetool.p4merge.pathを定義する必要があります。
git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
- 上記は、p4merge がシステム全体ではなく現在のユーザーに対してインストールされた場合のパスの例です (管理者権限や UAC の昇格は必要ありません)
- 現在のユーザーのホームディレクトリに展開されるはずですが
~
(理論的にはパスは になるはずです~/AppData/Local/Perforce/p4merge.exe
)、これは私の場合は機能しませんでした。 - さらに良いのは、環境変数(例)を利用することです
$LOCALAPPDATA/Perforce/p4merge.exe
。git はパスの環境変数を展開していないようです(これを機能させる方法をご存知の場合は、私に知らせるか、この回答を更新してください)