gitのマージツールにWinMergeを使う
前置き
gitにはconflictを起こしたときにマージを支援するための仕組みがあります。
それが
git mergetool
です。
LinuxだとMeldとかがあるようですが、Windowsだとgit用にというのが見つけられなかったので一般的なWinMergeを使うことにしました。
ちなみにgitはCygwinのgitでやってます。
のでmsysgitの方はよくわからないです・・・
#一緒?
ちなみに自分はマージツールだけ変更したかったのでマージツールだけWinMergeに切り替えてますが、diffツールとしてWinMergeを使うことも出来るようです。
また、私はWinMergeを使いましたがDiffMergeというツールも使えるようです。
概要
長々と説明なんか要らないという人のために。
http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git/
ここのを使わせてもらいます。
のでここの通りにやればできます。
ただし.cmdの部分に指定する値が少し間違ってるので注意!
\"\$LOCAL\" \"\$REMOTE\"" \"\$BASE\"" \"\$MERGED\"
を
\"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\"
に変更してください。
(二箇所ダブルクオートを消す。ダブルクオートの対応が間違っているため)
説明
上記URL先のを使用させてもらうので上記URL先を読みましょう。
リンク先にあるリンクからgithubに飛んで以下の必要なものを落としパスが通ってるところに置く
githelperfunctions.shの最終行辺りを編集
以下のコマンドを実行し、gitにツール登録を行う
# diffツールとして使う場合 ## DiffMergeを使う場合 git config --global difftool.diffmerge.cmd "diffmerge-diff.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\"" ## WinMergeを使う場合 git config --global difftool.winmerge.cmd "winmerge-diff.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\"" ## プロンプトの設定(WinMerge/DiffMerge共通) git config --global difftool.prompt false # マージツールとして使う場合 ## DiffMergeを使う場合 git config --global mergetool.diffmerge.cmd "diffmerge-merge.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\"" git config --global mergetool.diffmerge.trustExitCode false ## WinMergeを使う場合 git config --global mergetool.winmerge.cmd "winmerge-merge.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\"" git config --global mergetool.winmerge.trustExitCode false
最後にmergetool/difftoolに先ほど登録したものを設定する(各リポジトリごとの設定)
# diffツールとしてDiffMergeを使う git difftool -t diffmerge # diffツールとしてWinMergeを使う git difftool -t winmerge # マージツールとしてDiffMergeを使う git mergetool -t diffmerge # マージツールとしてWinMergeを使う git mergetool -t winmerge
デフォルトとして設定するならglobalに設定する
# diffツールとしてDiffMergeを使う git config --global diff.tool diffmerge # diffツールとしてWinMergeを使う git config --global diff.tool winmerge # マージツールとしてDiffMergeを使う git config --global merge.tool diffmerge # マージツールとしてWinMergeを使う git config --global merge.tool winmerge
以上でWinMergeがmergetoolとして(他の設定すればそのように)なります。