为什么可以';我不能在Windows上使用TortoiseMerge作为我的git合并工具吗?
我正在尝试执行有史以来的第一次Git合并(令人兴奋!),但无法让Git Gui(Git 1.7.4.msysgit.0中的0.13.GITGUI)在Windows 7上识别OrtoiseReme(1.6.11.20210 x64)。基于,我做了以下配置更改:为什么可以';我不能在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 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
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,而不是OttoiseMergeisTortoiseMerge.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中的所有冲突文件?