我在Windows7 64位系统下使用64位git for-windows 2.12.2 .此外,我有64位TortoiseGit 2.4.0安装在E:\Program Files\TortoiseGit下。现在,我已经尝试将tortoisegitmerge.exe设置为合并工具,然后在bash和git gui下使用它。
下面是我对全局.gitconfig文件的设置:
[merge]
tool = tortoisemerge
[mergetool "tortoisemerge"]
path = E:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe这个设置来自于这里的一个答案:git -为什么乌龟不作为我的合并工具?-堆栈溢出
如果我试图从命令行启动合并工具,这很好,请参见下面的日志:
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之后,您可以看到打开的窗口的图片,它看起来已经修复了冲突,所以我只需单击Save按钮,关闭tortoisegitmerge,然后运行git am --continue。

但是当冲突发生时,我可以打开git gui gui工具,在这里看到图片,看,它在这里显示了一个冲突。

当我右击并单击"merge tool“上下文菜单时,我会收到这样的错误消息框,它写着:”不支持的合并工具'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'”。
我尝试过cmd或path字段的其他设置,但是没有任何运气,都失败了。
有人能帮忙吗?谢谢。
编辑:--我已经尝试过这个堆栈溢出问题中的所有设置:为什么我不能在Windows上使用TortoiseMerge作为我的git合并工具?-堆栈溢出,但是没有运气,所有的设置都失败了,都有相同的错误。
发布于 2017-07-23 10:01:26
调试一段时间后,我想我已经完全解决了这个问题,只需在文件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]
}那么问题就可以解决了。参见这里的一些讨论:谷歌小组讨论。
https://stackoverflow.com/questions/43317998
复制相似问题