【问题标题】:Using p4merge as git diff tool使用 p4merge 作为 git diff 工具
【发布时间】:2015-11-16 02:44:42
【问题描述】:

我使用windows 7。我想使用p4merge 作为 Git diff/merge 工具。我关注this articlethis one 来设置和配置p4merge

git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"
git config --global diff.tool p4merge
git config --global difftool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"

这些行来自git config

merge.tool=p4merge
mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe
diff.tool=p4merge
difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe
mergetool.keeptemporaries=false
mergetool.prompt=false

现在git mergetool 命令工作正常。但是当我在git bash 中使用git difftool 命令时,我期望p4merge 但我在git bash 中看到了diff 的内部实现。

我尝试了Smooth Git + P4merge,但它对我不起作用,我也尝试按照External Merge and Diff Tools 中的描述进行操作,但我不明白。

注意:

当冲突类型为removed file conflict 时,git difftool 命令打开p4merge

【问题讨论】:

  • diff.tool=p4merge替换diff.tool=p4diff
  • @topheman 请看我的编辑。
  • 使用/代替`\`作为分隔符或许可以解决问题...
  • @Philippe 我试过了,但没有解决问题。我编辑问题,请再看一遍。
  • 我也使用了instructions,并成功使用 P4Merge 处理更改的文件,因为使用git difftool --staged 已经有一段时间了。有一件事让我很恼火:添加文件时的错误消息。 p4merge 想要比较文件。有没有办法省略添加的文件?你是怎么解决这个问题的?

标签: git bash version-control windows-7 p4merge


【解决方案1】:

不确定是否有帮助,但最新版本的 Git 支持 P4Merge(我通过 MSYS2 在 Windows 上使用 git version 2.17.0.)。

您可以通过运行git difftool --tool-help 来判断是否是这种情况。它会列出 Git 可以使用的可用工具(因为他们已经在您的 %PATH% 中找到它们)以及它可以使用的工具(如果它们已安装)。

如果p4merge 在此列表中,那么您只需将p4merge.exe 所在的路径添加到您的%PATH%(在Windows 上我推荐Rapid Environment Editor)。

完成此操作后,您只需将以下配置放入您的.gitconfig

[diff]
    tool = p4merge
[merge]
    tool = p4merge

没有别的。因此,请删除 difftool.path 之类的其他内容。

然后,只需使用 git difftoolgit mergetool 即可满足您的需求。

注意:我有一个存储库,即使我发出了git difftoolgit mergetool 命令,P4Merge 也不会启动。我不确定那个回购中有什么问题。但是我尝试使用git init 在我的驱动器上的某处创建一个空的存储库,添加一个文件,提交它,然后修改它,然后我尝试了difftool,它成功了。因此,如果上述描述对您不起作用,则问题可能出在其他地方。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    迟到总比没有好:)

    mergetool.p4merge.path 应该是 mergetool.p4merge.cmd

    将 mergetool 和 difftool 行的路径更改为 cmd。

    【讨论】:

    • 您可以使用选项mergetool.p4merge.path,会有一个标准的标签顺序:REMOTE、BASE、LOCAL。
    【解决方案3】:

    如果您使用的是 Mac,请不要忘记在 Applications 之前添加/

    [mergetool "p4merge"]
        path = /Applications/p4merge.app/Contents/MacOS/p4merge
    

    这就是为什么当我在下面运行时 P4Merge 不会为我打开的原因:

    git mergetool
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2010-09-07
      • 2015-07-31
      相关资源
      最近更新 更多