我正在尝试执行我的第一次Git合并(令人兴奋!),但无法获得Git Gui(来自Git 1.7.4.msysgit.0的0.13.GITGUI)以识别TortoiseMerge(1.6.11.20210 x64) Windows 7.基于an answer to a similar question,我进行了以下配置更改:
$ 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并尝试“运行合并工具”时,收到错误Unsupported merge tool 'tortoisemerge'
。
谁能告诉我我做错了什么?以下是我~/.gitconfig
的相关部分:
[merge]
tool = tortoisemerge
[mergetool "tortoisemerge"]
cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
更新
从命令行运行git mergetool
时,TortoiseMerge可以正常使用上面的配置。似乎只有Git Gui有问题。 : - /
答案 0 :(得分:55)
如果你有最新的git,请运行以下命令行:
git config merge.tool tortoisemerge
重要提示:请勿在命令中添加.exe
扩展名。
如果失败,或者如果你想添加git不知道的其他合并工具,请执行以下操作:
在编辑器中打开以下内容之一:
C:\Program Files\Git\mingw64\share\git-gui\lib\mergetool.tcl
C:\Program Files (x86)\Git\share\git-gui\lib\mergetool.tcl
将这样的内容添加到mergetool.tcl:
tortoisemerge {
set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}
将新的tortoisemerge条目置于其他代码之上:
default {
error_popup [mc "Unsupported merge tool '%s'" $tool]
return
}
奖金示例:
要使用SourceGear diffmerge,请将其添加到mergetool.tcl:
diffmerge {
set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}
答案 1 :(得分:17)
试试这个:
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = "TortoiseMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"
来源:http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/
答案 2 :(得分:4)
对于我正在处理的情况,mergetool已经设置为tortoisemerge,但它无法找到它。
在Windows中提供完全合格的位置:
git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""
答案 3 :(得分:2)
尝试从命令行键入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
。
它一次显示一个文件,因此您最好安装TortoiseGit,这样可以更容易处理,即使只是差异部分。
答案 4 :(得分:1)
此问题在最新的git(我有git version 1.9.4.msysgit.1
)中已解决。
C:\git\build>git mergetool
This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff
C:\git\build>git config merge.tool tortoisemerge
C:\git\build>git mergetool
No files need merging