由于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中展示差异。
那么这项工作的诀窍是什么?
答案 0 :(得分:10)
在命令提示符下,尝试:git config --global diff.tool p4diff
这对我有用,使用你所描述的配置文件设置:
[diff]
tool = p4merge
[difftool "p4diff"]
external = '"C:/Program Files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"'
正在运行git difftool
按预期打开p4merge。
参考:How do I view 'git diff' output with a visual diff program?
答案 1 :(得分:9)
我在使用MSysGit v1.8.4的WIndows 7上。
对我来说,唯一的解决方案是将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,因为这些方法之间的连字符等有时会有所不同。
答案 2 :(得分:2)
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进行测试。
答案 3 :(得分:0)
PS:
答案 4 :(得分:0)
我个人更喜欢将其他开源工具用于diff,
扩展@wengeezhang答案,这是将Meld配置为difftool的步骤。
git config --global diff.tool meld
git config --global difftool.meld.cmd "meld \"$LOCAL\" \"$REMOTE\""
奖金提示: 转到Git repo的根目录,并按以下命令启动以查看所有diff并排
git difftool --dir-diff ./