初めてのGitマージ(エキサイティング!)を実行しようとしていますが、Windows 7でTortoiseMerge(1.6.11.20210 x64)を認識するためにGit Gui(Git 1.7.4.msysgit.0から0.13.GITGUI)を取得できません。 同様の質問への回答 に基づいて、次の構成変更を行いました。
$ git config --global merge.tool tortoisemerge
$ git config --global mergetool.tortoisemerge.cmd 'TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"'
$ git config --global --list
...snip...
merge.tool=tortoisemerge
mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"
$
残念ながら、Git Guiを起動して「マージツールを実行」しようとすると、エラーUnsupported merge tool 'tortoisemerge'
が表示されます。
誰が私が間違ったことを教えてもらえますか? ~/.gitconfig
の関連セクションは次のとおりです。
[merge]
tool = tortoisemerge
[mergetool "tortoisemerge"]
cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
更新
コマンドラインからgit mergetool
を実行する場合、TortoiseMergeは上記の設定で正常に動作します。 Git Guiのみに問題があるようです。 :-/
最新のgitがある場合は、このコマンドラインを1回実行します。
_git config merge.tool tortoisemerge
_
重要:コマンドに_.exe
_拡張を追加しないでください。
それが失敗する場合、またはgitが認識していない別のマージツールを追加する場合は、次のようにします。
エディターで次のいずれかを開きます。
C:\Program Files\Git\mingw64\share\git-gui\lib\mergetool.tcl
_C:\Program Files (x86)\Git\share\git-gui\lib\mergetool.tcl
このようなものをmergetool.tclに追加します。
_tortoisemerge {
set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}
_
この他のコードの上に新しいtortoisemergeエントリを配置します。
_default {
error_popup [mc "Unsupported merge tool '%s'" $tool]
return
}
_
ボーナスの例:
SourceGear diffmergeを使用するには、これをmergetool.tclに追加します。
_diffmerge {
set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}
_
これを試して:
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = "TortoiseMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"
ソース: http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/
私が取り組んでいたケースでは、mergetoolはすでにtortoisemergeに設定されていましたが、見つかりませんでした。
Windowsで機能する完全修飾された場所の提供:
git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""
コマンドラインからTortoiseMerge.exe
と入力して、パスにあることを確認してください。マイコンピュータ>プロパティ>詳細設定>環境変数>システム変数:パスで追加しない場合。
次に、コマンドプロンプトから次のコマンドを使用して構成します
git config --replace --global diff.tool tortoisemerge
git config --replace --global difftool.diffmerge.cmd "TortoiseMerge.exe -base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\""
git config --replace --global difftool.Prompt false
コマンドプロンプトから使用するには、git作業ディレクトリ内からgit difftool
と入力します。
ファイルは一度に1つずつ表示されるため、TortoiseGitをインストールすると、diff部分だけであっても処理が簡単になります。
この問題は最新のgitで解決されたようです(私はgit version 1.9.4.msysgit.1
)。
C:\git\build>git mergetool
This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff
C:\git\build>git config merge.tool tortoisemerge
C:\git\build>git mergetool
No files need merging