为了跟进 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
您应该在 available 或 valid 列表中看到 p4merge。如果没有,请更新你的 git。
如果 p4merge 被列为 available,则它在您的 PATH 中,您只需设置 merge.tool em>:
git config --global merge.tool p4merge
如果它被列为valid,除了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 似乎没有为路径扩展环境变量(如果你知道如何让它工作,请告诉我或更新这个回答)