在Windows上为Git配置差异工具

在Windows上为Git配置差异工具,git,merge,diff,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"'

由于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 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在使用
git diff
时仍然试图在Powershell中呈现差异


那么,实现这一点的诀窍是什么呢?

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

这对我来说很有效,使用的配置文件设置如您所述:

[diff]  
    tool = p4merge  
[difftool "p4diff"]  
    external = '"C:/Program Files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"'
按预期运行git difftool打开p4merge


参考:

我在Windows7上使用MSYSGitV1.8.4

对我来说,唯一的解决方案是将p4merge添加到系统路径变量中(之后需要重新启动)。完成后,我想这样做:

[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 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,因为连字符等有时在这些方法之间是不同的。

Dan Limerick有一个关于在Windows上设置Performce的p4merge的优秀简短教程:

在Windows 7上使用Git 1.9.4和p4merge 2014.1进行测试

  • git config——全局差异工具p4merge
  • git config--global difftool.p4merge.cmd“p4merge\”$LOCAL\“\$REMOTE\”
  • 将p4merge.exe路径(“C:\Program Files\Perforce\p4merge.exe”)添加到环境路径
  • 附言:

    • 在步骤2中,您必须添加“$LOCAL\”\“$REMOTE\”(LOCAL diff REMOTE),否则p4merge将不知道如何区分

    我个人更喜欢meld,因为它与其他开源工具不同

    展开@wengeezhang answer,下面是将Meld配置为difftool的步骤

  • 将Meld.exe路径(“C:\Program Files(x86)\Meld”)添加到环境路径
  • 启动windows命令提示符
  • git配置——全局差异工具融合
  • git config--global difftool.meld.cmd“meld\”$LOCAL\“\$REMOTE\”
  • 奖金提示: 转到GitRepo的根目录,并启动以下命令以并排查看所有差异

    git difftool --dir-diff ./
    

    它不应该是
    tool=p4diff
    ?这也是您在输入命令时得到的结果,当您输入命令
    git config--global diff.tool p4diff
    相关的post-How-to时。我刚刚在它尝试启动Meld时遇到了一系列错误?@NicholasPetersen什么样的错误?错误摘录将更清楚地说明问题所在。