在 Windows 上为 Git 配置 diff 工具

问题描述 投票:0回答:5

由于 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 merge diff
5个回答
14
投票

在命令提示符下,尝试:

git config --global diff.tool p4diff

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

[diff]  
    tool = p4merge  
[difftool "p4diff"]  
    external = '"C:/Program Files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"'

运行

git difftool
按预期打开了 p4merge。

参考:如何使用视觉 diff 程序查看“git diff”输出?


10
投票

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


3
投票

我个人更喜欢与其他开源工具进行融合以进行比较,

扩展@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 存储库的根目录并启动以下命令以并排查看所有差异

git difftool --dir-diff ./

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 进行测试。


1
投票
  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") 添加到环境路径

ps:

  • 在第2步中,你必须添加\"$LOCAL\"\"$REMOTE\"(本地差异远程),否则p4merge将不知道要差异什么
© www.soinside.com 2019 - 2024. All rights reserved.