我将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"
    

    09-04 17:30