在Windows上为Git配置diff-tool

Cla*_*sen 5 git diff merge

由于git diff在powershell中主要导致无法读取的空白或奇怪字符,我安装了Perforce P4Merge来处理合并和差异.

但是,我无法git diff打开p4merge应用程序来查看diff.到目前为止,我的.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
Run Code Online (Sandbox Code Playgroud)

路径是正确的.但是,唉,git仍然试图在使用时在Powershell中呈现差异git diff.

那么这项工作的诀窍是什么?

Ken*_*tek 10

在命令提示符下,尝试: git config --global diff.tool p4diff

这对我有用,使用你所描述的配置文件设置:

[diff]  
    tool = p4merge  
[difftool "p4diff"]  
    external = '"C:/Program Files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"'
Run Code Online (Sandbox Code Playgroud)

git difftool按预期运行打开的p4merge.

参考:如何使用visual diff程序查看'git diff'输出?

  • 不应该是`tool = p4diff`?这也是你输入命令`git config --global diff.tool p4diff`时得到的 (5认同)

Som*_*guy 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
Run Code Online (Sandbox Code Playgroud)

我建议您坚持使用"git config"而不是手动编辑conf,因为这些方法之间的连字符等有时是不同的.