首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git for Windows: tortoisegitmerge只能从bash命令行启动,而不能从git gui启动

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

Stack Overflow用户
提问于 2017-04-10 08:15:54
回答 1查看 1.4K关注 0票数 0

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

下面是我对全局.gitconfig文件的设置:

代码语言:javascript
复制
[merge]
    tool = tortoisemerge    
[mergetool "tortoisemerge"]
    path = E:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe

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

如果我试图从命令行启动合并工具,这很好,请参见下面的日志:

代码语言:javascript
复制
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中尝试了其他设置,比如这个:

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

但是,在从bash启动时仍然存在其他错误,请参见下面的内容:

代码语言:javascript
复制
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字段的其他设置,但是没有任何运气,都失败了。

有人能帮忙吗?谢谢。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-23 10:01:26

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

代码语言:javascript
复制
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]
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43317998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档