has*_*ian 7 git bash version-control p4merge windows-7
我用windows 7.我想p4merge用作Git diff/merge工具.我按照这篇文章和这个来设置和配置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"
Run Code Online (Sandbox Code Playgroud)
这些行来自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
Run Code Online (Sandbox Code Playgroud)
现在git mergetool命令工作正常.但是当我使用git difftool命令时git bash,我希望p4merge但是我看到了diff的内部实现git bash.
我试过Smooth Git + P4merge,但它对我不起作用,我也尝试按照外部合并和差异工具中的描述进行操作,但我不明白.
注意:
当冲突类型为removed file conflict,git difftool命令打开p4merge.
不确定是否有帮助,但是最新版本的Git支持P4Merge(我git version 2.17.0.通过MSYS2在Windows上使用)。
您可以通过运行判断是否是这种情况git difftool --tool-help。它将列出Git可以使用的可用工具(因为它们已经在您的中找到了%PATH%)以及它可以使用的工具(如果已安装)。
如果p4merge在此列表中,则只需要添加p4merge.exe您所在的路径%PATH%(在Windows上,我建议为此使用Rapid Environment Editor)。
完成之后,您只需要在您的以下配置 .gitconfig
[diff]
tool = p4merge
[merge]
tool = p4merge
Run Code Online (Sandbox Code Playgroud)
没别的。因此,请删除其他difftool.path所有内容。
然后,只需使用git difftool或git mergetool使您的心满意足。
注意:我有一个存储库,即使我发出了git difftoolor git mergetool命令,P4Merge也不会启动。我不确定该回购中的问题是什么。但是,我尝试使用驱动器在驱动器上的某个地方创建一个空的仓库git init,添加文件,提交,然后修改它,然后我尝试了,difftool并且成功了。因此,如果上述说明对您不起作用,则可能是问题出在其他地方。希望这可以帮助。