在Windows上的Git:你如何设置一个mergetool?

我已经尝试了Cygwin上的msysGit和Git。 两者都很好地工作,并且都完美地运行gitk和git-gui。

现在我怎么配置一个mergetool? (Vimdiff在Cygwin上工作,但最好我喜欢一些对我们的Windows爱好者同事更友好的用户界面。)


为了跟进Charles Bailey的回答,这里是我使用p4merge(免费的跨平台3way合并工具)的git设置; 在msys上测试Git(Windows)安装:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED"'

或者,从Windows cmd.exe shell中,第二行变成:

git config --global mergetool.p4merge.cmd "p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED""

这些变化(相对于查尔斯贝利):

  • 添加到全球git配置,即有效的所有git项目不只是目前的一个
  • 自定义工具配置值驻留在“mergetool。[tool] .cmd”,而不是“merge。[tool] .cmd”(愚蠢的我,花了一个小时解决了为什么git一直抱怨不存在的工具)
  • 为所有文件名添加双引号,这样合并工具仍然可以找到带空格的文件(我在Powershell的msys Git中进行了测试)
  • 请注意,默认情况下,Perforce会将其安装目录添加到PATH,因此不需要在命令中指定p4merge的完整路径
  • 下载:http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools


    编辑 (2014年2月)

    正如@Gregory Pakosz指出的那样,最新的msys git现在“本地”支持p4merge (在1.8.5.2.msysgit.0上测试过)。

    您可以通过运行显示支持的工具列表:

    git mergetool --tool-help
    

    您应该在可用列表或有效列表中看到p4merge。 如果没有,请更新你的git。

    如果p4merge被列为可用,它在你的PATH中,你只需要设置merge.tool:

    git config --global merge.tool p4merge
    

    如果它被列为有效,除了merge.tool之外,您还必须定义mergetool.p4merge.path:

    git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
    
  • 以上是为当前用户安装p4merge时的示例路径,而非系统范围(不需要管理员权限或UAC提升)
  • 虽然~应扩展到当前用户的主目录(因此理论上路径应该是~/AppData/Local/Perforce/p4merge.exe ),但这对我并不适用
  • 更好的办法是利用一个环境变量(例如$LOCALAPPDATA/Perforce/p4merge.exe ),git似乎没有扩展路径的环境变量(如果你知道如何使这个工作成功,请让我知道或更新这个答案)

  • 设置mergetool.p4merge.cmd将不再工作,因为Git已经开始尝试支持p4merge,请参阅libexec / git-core / git-mergetool--lib.so我们只需要指定git的mergetool路径,例如p4merge:

    git config --global mergetool.p4merge.path 'C:Program FilesPerforcep4merge.exe'
    git config --global merge.tool p4merge
    

    然后它会工作。


    我在WinXP上使用了便携式Git(很好用!),并且需要解决分支中出现的冲突。 在我检查的所有gui中,KDiff3被证明是最透明的。

    但是我发现了这篇博客文章中需要使用Windows的说明,这些说明与此处列出的其他方法略有不同。 基本上.gitconfig于将这些行添加到我的.gitconfig文件中:

    [merge]
        tool = kdiff3
    
    [mergetool "kdiff3"]
        path = C:/YourPathToBinaryHere/KDiff3/kdiff3.exe
        keepBackup = false
        trustExitCode = false
    

    现在很好地工作!

    链接地址: http://www.djcxy.com/p/7233.html

    上一篇: Git on Windows: How do you set up a mergetool?

    下一篇: What's the best visual merge tool for Git?