我将msys Git用于Windows机器上的源代码控制,并且试图弄清楚如何使我的合并工具WinMerge与Git一起使用。
我已尽我所能来追踪the instructions on this blog,因为它是我所发现的最接近我想做的事情。基本上我所做的是:
修改我的.gitconfig
文件以包括以下内容:
[合并]
工具= WinMerge
[mergetool“winmerge”]
cmd = \“C:\\ Program Files(x86)\\ WinMerge \\ WinMergeU.exe \”“$ PWD / $ LOCAL”“$ PWD / $ REMOTE”“$ PWD / $ MERGED”
trustExitCode =否
keepBackup =假
这几乎可以正常工作。当我尝试从Git运行合并工具时,WinMerge给我一个错误,提示它找不到文件的路径,这是完全有意义的,因为它正在寻找的路径是:
C:\ MY \ WORKING \ DIRECTORY \ -e
C:\ MY \ WORKING \ DIRECTORY \ -ub
看起来Git正在将选项传递到合并工具中,而不是如果一切正常的话我希望传递的本地和远程文件名。
我已经在网上搜索了Git的合并文档,但是似乎找不到与我要执行的操作相关的任何内容。我的猜测是解决方案将是以下之一:
$LOCAL
和$REMOTE
不正确,将$LOCAL
和$REMOTE
变量更改为正确的值。 .bat
脚本以调用WinMergeU,并在.bat
脚本的逻辑内处理Git发送到合并工具的参数。 最佳答案
从WinMerge Command line manual:
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe /ub /e \"
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe /u /e \"
(/ u是具有最新WinMerge的新/ ub)
作为您的mergetool部分中的命令,可能会更好地工作。
但是,您可能必须将此调用包装在脚本中,如SO answer中所述。
提取适合
merge.tool
:C:\myGitRepo>git config --global merge.tool winmerge
C:\myGitRepo>git config --global mergetool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global mergetool.prompt false
将
winmerge.sh
存储在PATH
的目录部分中:#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"