10

I use windows 7. I want to use p4merge as Git diff/merge tool. I follow this article and this one to setup and config 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"

And these lines are from 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

Now git mergetool command works fine. But when I use git difftool command in git bash, I expect p4merge but I see internal implementation of diff in git bash.

I tried Smooth Git + P4merge but it does not work for me also I tried to do as described in External Merge and Diff Tools but I did not understand that.

Note:

When type of conflict is removed file conflict, git difftool command opens p4merge.

4

3 回答 3

10

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

您可以通过运行来判断是否是这种情况git difftool --tool-help。它将列出 Git 可以使用的可用工具(因为他们已经在%PATH%的.

如果p4merge在此列表中,那么您只需将p4merge.exe驻留的路径添加到您的%PATH%(在 Windows 上,我建议为此使用快速环境编辑器)。

完成此操作后,您只需要以下配置即可.gitconfig

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

没有别的了。所以删除其他类似的东西difftool.path

然后只需使用git difftoolgit mergetool让您心满意足。

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

于 2018-07-19T05:08:27.627 回答
1

迟到总比不到好 :)

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

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

于 2016-06-15T13:50:15.110 回答
0

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

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

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

git mergetool
于 2021-10-18T23:16:18.180 回答