在Windows上为Git配置diff-tool

时间:2011-10-30 12:00:57

标签: git merge diff

由于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中展示差异。

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

5 个答案:

答案 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)

  1. git config --global diff.tool p4merge
  2. git config --global difftool.p4merge.cmd“p4merge \”$ LOCAL \“\”$ REMOTE \“”
  3. 将p4merge.exe路径(“C:\ Program Files \ Perforce \ p4merge.exe”)添加到环境路径
  4. PS:

    • 在第2步中,您要添加 \“$ LOCAL \”\“$ REMOTE \” (本地差异远程),否则p4merge将无法知道什么分歧

答案 4 :(得分:0)

我个人更喜欢将其他开源工具用于diff,

扩展@wengeezhang答案,这是将Meld配置为difftool的步骤。

  1. 将Meld.exe路径(“ C:\ Program Files(x86)\ Meld”)添加到环境路径
  2. 启动Windows命令提示符
  3. git config --global diff.tool meld
  4. git config --global difftool.meld.cmd "meld \"$LOCAL\" \"$REMOTE\""

奖金提示: 转到Git repo的根目录,并按以下命令启动以查看所有diff并排

git difftool --dir-diff ./