为什么我不能在Windows上使用TortoiseMerge作为我的git合并工具?

时间:2011-03-04 05:50:44

标签: windows git user-interface mergetool tortoisemerge

我正在尝试执行我的第一次Git合并(令人兴奋!),但无法获得Git Gui(来自Git 1.7.4.msysgit.0的0.13.GITGUI)以识别TortoiseMerge(1.6.11.20210 x64) Windows 7.基于an answer to a similar question,我进行了以下配置更改:

$ 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有问题。 : - /

5 个答案:

答案 0 :(得分:55)

如果你有最新的git,请运行以下命令行:

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]
}

答案 1 :(得分:17)

试试这个:

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

答案 2 :(得分:4)

对于我正在处理的情况,mergetool已经设置为tortoisemerge,但它无法找到它。

在Windows中提供完全合格的位置:

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

答案 3 :(得分:2)

尝试从命令行键入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

它一次显示一个文件,因此您最好安装TortoiseGit,这样可以更容易处理,即使只是差异部分。

答案 4 :(得分:1)

此问题在最新的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