git for Windows:tortoisegitmerge只能从bash命令行启动,而不能git gui

我在Windows7 64位系统下使用64位git-for-windows 2.12.2。 另外,我在E:\Program Files\TortoiseGit下安装了64位的TortoiseGit 2.4.0。 现在,我已经尝试将tortoisegitmerge.exe设置为合并工具,然后在bashgit gui下使用它。

这是我的全局.gitconfig文件的设置:

 [merge] tool = tortoisemerge [mergetool "tortoisemerge"] path = E:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe 

这个设置来自这里的一个答案: git – 为什么不把我的合并工具作为toolbox? – 堆栈溢出

这工作正常,如果我尝试从命令行启动合并工具,请参阅下面的日志:

 123@123-PC MINGW64 /d/code/cb/cb_sf_git/trunk (test_merge_gui|AM 3/19) $ git mergetool Merging: src/CodeBlocks_wx31.cbp Normal merge conflict for 'src/CodeBlocks_wx31.cbp': {local}: modified file {remote}: modified file 123@123-PC MINGW64 /d/code/cb/cb_sf_git/trunk (test_merge_gui|AM 3/19) $ git am --continue 

在运行git mergetool ,你可以看到打开的窗口的镜像,看起来像是tortoisegitmerge已经修复了冲突,所以我只需点击Savebutton,closurestortoisegitmerge,然后运行git am --continue打开tortoisegitmerge窗口

但是当发生冲突时,我可以打开git gui gui工具,看到这里拍摄的图像,看,这里显示出一个冲突。

git gui显示冲突

当我右键单击并单击“合并工具”上下文菜单,我得到这样的错误消息框,它说:“不支持的合并工具tortoisemerge'”,请参阅下面的图片:

错误信息

而我已经在.gitconfig尝试了其他设置,比如这个:

 [merge] tool = tortoisemerge [mergetool "tortoisemerge"] cmd = '"E:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"' 

但是从bash启动时还有其他的错误,如下所示:

 123@123-PC MINGW64 /d/code/cb/cb_sf_git/trunk (test_merge_gui|AM 3/19) $ git mergetool Merging: src/CodeBlocks_wx31.cbp Normal merge conflict for 'src/CodeBlocks_wx31.cbp': {local}: modified file {remote}: modified file /mingw64/libexec/git-core/git-mergetool--lib: line 128: E:/Program Files/TortoiseGit/bin/TortoiseGitMerge.exe -base:$BASE -theirs:$REMOTE -mine:$LOCAL -merged:$MERGED: No such file or directory src/CodeBlocks_wx31.cbp seems unchanged. Was the merge successful [y/n]? 

当尝试从git gui上下文菜单启动合并工具时,我会得到同样的消息框,提示“不支持的合并工具”tortoisemerge'“。

我尝试了cmdpath字段的其他设置,但没有任何运气,都失败了。

任何人都可以帮忙? 谢谢。

编辑:我已经尝试在此stackoverflow问题中的所有设置: 为什么我不能在Windows上使用TortoiseMerge作为我的git合并工具? – 堆栈溢出 ,但没有运气,都失败了相同的错误。

Solutions Collecting From Web of "git for Windows:tortoisegitmerge只能从bash命令行启动,而不能git gui"

经过一段时间的调试,我想我已经完全解决了这个问题,只需在文件mergetool.tcl添加一段代码。

 tortoisemerge { #set cmdline [list "$merge_tool_path" -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"] #Note: no quote around the $BASE like variables, because those cause escaped quote #and it looks like TortoiseGitMerge does not support such formats. set cmdline [list "$merge_tool_path" -base:$BASE -mine:$LOCAL -theirs:$REMOTE -merged:$MERGED] } 

那么问题就可以解决了。 请参阅这里的一些讨论: 谷歌小组讨论 。