由于 powershell 中的
git diff
通常会导致大量不可读的空格或奇怪字符,因此我安装了 Perforce P4Merge 来处理合并和差异。
但是,我无法让
git diff
打开 p4merge 应用程序来查看差异。到目前为止,我的 .gitconfig 看起来像这样:
[diff]
tool = p4diff
[difftool "p4diff"]
external = 'C:/PROGRA~1/Perforce/p4merge.exe "$LOCAL" "$REMOTE"'
prompt = false
[merge]
keepBackup = false
tool = p4merge
[mergetool "p4merge"]
cmd = "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
path = 'C:/PROGRA~1/Perforce/p4merge.exe'
prompt = false
keepBackup = false
keepTemporaries = false
trustExitCode = false
路径正确。但遗憾的是,当使用
git diff
时,git 仍然尝试在 Powershell 中呈现差异。
那么要实现这个功能有什么技巧呢?
在命令提示符下,尝试:
git config --global diff.tool p4diff
这对我有用,使用您所描述的设置的配置文件:
[diff]
tool = p4merge
[difftool "p4diff"]
external = '"C:/Program Files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"'
运行
git difftool
按预期打开了 p4merge。
我在 Windows 7 上使用 MSysGit v1.8.4。
对我来说,唯一的解决方案是将 p4merge 添加到系统路径变量(之后需要重新启动)。完成此操作后,我这样配置:
git config --global diff.tool p4merge
git config --global difftool.p4merge.cmd 'p4merge.exe $LOCAL $REMOTE'
git config --global difftool.prompt false
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe $BASE $LOCAL $REMOTE $MERGED'
git config --global mergetool.prompt false
git config --global mergetool.trustExitCode false
git config --global mergetool.keepBackup false
我建议您坚持使用“git config”,而不是手动编辑conf,因为连字符等有时在这些方法之间是不同的。
我个人更喜欢与其他开源工具进行融合以进行比较,
扩展@wengeezhang答案,这里是将Meld配置为difftool的步骤。
git config --global diff.tool meld
git config --global difftool.meld.cmd "meld \"$LOCAL\" \"$REMOTE\""
额外提示: 转到 Git 存储库的根目录并启动以下命令以并排查看所有差异
git difftool --dir-diff ./
Dan Limerick 有一个关于在 Windows 上设置 Perforce 的 p4merge 的优秀简短教程:
http://danlimerick.wordpress.com/2011/06/19/git-for-window-tip-use-p4merge-as-mergetool/
在 Windows 7 上使用 Git 1.9.4 和 p4merge 2014.1 进行测试。
ps: