windows - 为什么我不能在 Windows 上使用 TortoiseMerge 作为我的 git merge 工具?

标签 windows git user-interface mergetool tortoisemerge

我正在尝试执行我的第一次 Git merge (令人兴奋!),但无法让 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 并尝试“运行 merge 工具”时,我收到错误消息 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 有问题。 :-/

最佳答案

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

git config merge.tool tortoisemerge

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

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

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

  • 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]
}

关于windows - 为什么我不能在 Windows 上使用 TortoiseMerge 作为我的 git merge 工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190188/

相关文章:

iOS 用户界面定制工具包?

windows - 如何确定 Windows 计算机的身份?

.net - 有人知道 Inno Setup 的可靠 .NET Framework 2.0 安装程序脚本吗?

windows - Win32 32位进程加载64位kernel32.dll

windows - 如何检测安装了哪个版本的 Internet Explorer?

java - 在 Jenkins 中运行已编译的 Jar 文件

git - 在 Windows 上为 Git 配置 GPG

windows - Git:由于行尾而无法放弃更改?

user-interface - 查找 Unity UI 元素的世界空间坐标

iPhone 失去了所有 UI 过渡动画