web-dev-qa-db-ja.com

Windowsでgit mergeツールとしてTortoiseMergeを使用できないのはなぜですか?

初めての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のみに問題があるようです。 :-/

45
Ben Blank

最新のgitがある場合は、このコマンドラインを1回実行します。

_git config merge.tool tortoisemerge_

重要:コマンドに_.exe_拡張を追加しないでください。

それが失敗する場合、またはgitが認識していない別のマージツールを追加する場合は、次のようにします。

エディターで次のいずれかを開きます。

  • 64ビットgit:_C:\Program Files\Git\mingw64\share\git-gui\lib\mergetool.tcl_
  • 32ビットgit: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]
}
_
56
Chris Dragon

これを試して:

[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/

17
Jake

私が取り組んでいたケースでは、mergetoolはすでにtortoisemergeに設定されていましたが、見つかりませんでした。

Windowsで機能する完全修飾された場所の提供:

git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""
4
jnrcorp

コマンドラインから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部分だけであっても処理が簡単になります。

2
aleemb

この問題は最新の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
1
Alex R