我使用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"
这些行来自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的内部实现。
我尝试了平滑的Git + P4merge,但它不适合我,我也尝试按照外部合并和Diff工具中描述的那样做,但我不明白。
注意:
当冲突类型为removed file conflict
时,git difftool
命令打开p4merge
不确定是否有帮助,但最近版本的Git支持P4Merge(我通过MSYS2在Windows上使用git version 2.17.0.
)。
您可以通过运行git difftool --tool-help
来判断是否存在这种情况。它将列出Git可以使用的可用工具(因为它们已经在您的%PATH%
中找到了)以及它可以使用的工具(如果它们已安装)。
如果p4merge
在这个列表中,那么你只需要将p4merge.exe
所在的路径添加到%PATH%
(在Windows上,我建议对此进行快速环境编辑器)。
完成后,您只需要在.gitconfig
[diff]
tool = p4merge
[merge]
tool = p4merge
,没有别的了。所以删除其他的东西,比如difftool.path
和所有的东西。
那就用git difftool
或git mergetool
吧。
注意:我有一个存储库,即使我发出git difftool
或git mergetool
命令,P4Merge也不会启动。我不确定那个回购有什么问题。然而,我尝试用git init
在我的驱动器上创建一个空的repo,添加一个文件,提交它,然后修改它,然后我尝试了difftool
,它工作了。因此,如果上述描述对你不起作用,那么问题可能出在其他地方。
晚做总比不做好:)
mergetool.p4merge。路径应为mergetool.p4merge.cmd
将mergetool和difftool的行路径都更改为cmd
如果你是Mac电脑,不要忘记在应用程序前添加/
,如:
[mergetool "p4merge"]
path = /Applications/p4merge.app/Contents/MacOS/p4merge
这就是为什么当我在下面运行时P4Merge不会为我打开的原因:
git mergetool
DeviantDev对此有一个很好的答案。
将此添加到我的.gitconfig中为我工作…
[diff]
tool = p4merge
[difftool]
prompt = false
[difftool "p4merge"]
path = C:\Program Files\Perforce\p4merge.exe
[merge]
tool = p4merge
[mergetool "p4merge"]
path = C:\Program Files\Perforce\p4merge.exe
[mergetool]
keepBackup = false