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

为什么可以';我不能在Windows上使用TortoiseMerge作为我的git合并工具吗?,windows,git,user-interface,mergetool,tortoisemerge,Windows,Git,User Interface,Mergetool,Tortoisemerge,我正在尝试执行有史以来的第一次Git合并(令人兴奋!),但无法让Git Gui(Git 1.7.4.msysgit.0中的0.13.GITGUI)在Windows 7上识别OrtoiseReme(1.6.11.20210 x64)。基于,我做了以下配置更改: $ git config --global merge.tool tortoisemerge $ git config --global mergetool.tortoisemerge.cmd 'TortoiseMerge.exe -bas

我正在尝试执行有史以来的第一次Git合并(令人兴奋!),但无法让Git Gui(Git 1.7.4.msysgit.0中的0.13.GITGUI)在Windows 7上识别OrtoiseReme(1.6.11.20210 x64)。基于,我做了以下配置更改:

$ 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并尝试“运行合并工具”时,我收到了错误
不支持的合并工具“tortoisemerge”

谁能告诉我我做错了什么?以下是我的
~/.gitconfig
的相关部分:

[merge]
        tool = tortoisemerge
[mergetool "tortoisemerge"]
        cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
更新

当从命令行运行
git mergetool
时,TortoiseMerge可以很好地使用上述配置。似乎只有Git Gui有问题:-/

试试这个:

[merge]
tool = tortoise

[mergetool "tortoise"]
cmd = "TortoiseMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -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


它一次显示一个文件,因此您最好还是安装Ortoisegit,它使事情更容易处理,即使只是针对差异部分。

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

git config merge.tool.org

重要提示:不要向命令添加
.exe
扩展名

如果失败,或者如果您想添加git不知道的其他合并工具,请执行以下操作:

在编辑器中打开以下选项之一:

  • 64位git:
    C:\ProgramFiles\git\mingw64\share\git gui\lib\mergetool.tcl
  • 32位git:
    C:\ProgramFiles(x86)\git\share\git gui\lib\mergetool.tcl
在mergetool.tcl中添加类似的内容:

tortoisemerge {
    set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}
diffmerge {
    set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}
将新的TortoiseEmerge条目置于其他代码之上:

default {
        error_popup [mc "Unsupported merge tool '%s'" $tool]
        return
}
奖金示例:

要使用SourceGear diffmerge,请将其添加到mergetool.tcl:

tortoisemerge {
    set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}
diffmerge {
    set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}

对于我正在处理的案例,mergetool已经设置为tortoisemerge,但它找不到它

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

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

这个问题似乎在最新的git中得到了解决(我有
git版本1.9.4.msysgit.1


恐怕也是这个问题。(虽然现在的错误是
不支持的合并工具'tortoise'
),当然)必须放置完整路径并转义双引号:
cmd=\''c:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe“\”-base:$base”-他们的“$REMOTE”-我的“$LOCAL”-合并的“$merged”
我的文件有问题,它们的名称中有空格。这个语法可以解决这个问题:
cmd=\”“c:/Program Files/TortoiseGIT/bin/TortoiseGitMerge.exe“\”-mine\“$REMOTE\”-base\“$LOCAL\”
。这适用于OrtoisegitMerge,而不是OttoiseMergeis
TortoiseMerge.exe
在您的路径中?你试过指定完整路径吗?@Ben-它确实在我的路径中,指定完整路径似乎没有任何效果:-/要合并的文件中是否有空格?@VonC-在文件名中?没有。@Ben:好吧,我只是想看看这是否与乌龟的出现有什么关系。好吧,我会倒霉的。两年过去了,我们终于找到了解决这个问题的办法!我已经在64位windows上安装了最新的git for windows 2.12.2,但是tortoisegitmerge.exe不在路径中,因此更新的答案和过期的答案都不起作用。均报告:不支持的合并工具“tortoisemerge”。而我的tortoisegit安装在
E:\ProgramFiles\tortoisegit\bin\TortoiseGitMerge.exe
中。有什么想法吗?谢谢。非常好的评论。工作得很好!令人失望的是,
git gui
的mergetool.tcl不支持
mergetool.$tool.cmd
:(如何打开基于gui的工具来合并git cmd中的所有冲突文件?