46

我正在尝试执行我的第一次 Git 合并(令人兴奋!),但无法让 Git Gui(来自 Git 1.7.4.msysgit.0 的 0.13.GITGUI)在 Windows 7 上识别 TortoiseMerge(1.6.11.20210 x64)。根据对类似问题的回答,我进行了以下配置更改:

$ 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 有问题。:-/

4

5 回答 5

58

如果您有最新的 git,请运行此命令行一次:

git config merge.tool tortoisemerge

重要提示:不要.exe向命令添加扩展名。

如果失败了,或者你想添加一个 git 不知道的其他合并工具,请执行以下操作:

在编辑器中打开以下选项之一:

  • 64 位 git:C:\Program Files\Git\mingw64\share\git-gui\lib\mergetool.tcl
  • 32 位 git: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]
}
于 2013-04-13T03:58:22.223 回答
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/

于 2011-03-04T06:02:20.260 回答
6

对于我正在处理的案例,mergetool 已经设置为 tortoisemerge,但它找不到它。

提供在 Windows 中工作的完全合格的位置:

git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""
于 2013-10-31T15:54:00.850 回答
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 difftool请在您的 git 工作目录中键入。

它一次显示一个文件,所以你最好还是安装 TortoiseGit,这使得事情更容易处理,即使只是 diff 部分。

于 2012-03-25T15:31:29.340 回答
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
于 2015-04-01T00:10:14.750 回答