p4merge error [GIT]
我正在尝试使用p4merge和git,但我得到:
启动p4merge时出错:"path/myfile"是(或指向)无效文件(列出了文件的基本版本、本地版本、远程版本和标准版本)。
Git告诉我冲突的情况,然后它询问我是否要启动配置的合并工具(p4merge),然后我得到上面的错误。
附加说明:任何文件都会发生这种情况!
关于这是什么以及如何修复它有什么线索吗?
在Windows7上使用msysgit对我很有用:
1 2 | git config --global merge.tool p4merge git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED' |
。
不知道为什么,但引用的话把我搞砸了。
您将在这里看到我的diffmerge或kdiff3配置。
基于此,我建议使用p4merge:
1 2 | git config --global merge.tool merge git config --global mergetool.merge.cmd"merge.sh "$PWD/$LOCAL" "$PWD/$BASE" "$PWD/$REMOTE" "$PWD/$MERGED"" |
而
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/sh # Passing the following parameters to mergetool: # local base remote merge_result alocal=$1 base=$2 remote=$3 result=$4 if [ -f $base ] then p4merge.exe -dl"$base""$alocal""$remote""$result" else p4merge.exe -dl"$result""$alocal""$remote""$result" fi |
号
您可以注意到:
- 合并配置中使用
PWD 。 - 使用"
merge 作为merge.tool名称(因为实际工具是在merge.sh 脚本中调用的,在该脚本中可以在任意数量的合并工具之间切换)。 - 在脚本中围绕
$base 、$alocal 、$remote 、$result 使用双引号。 - 根据"基本"文件的存在来调用工具的条件路径。
- 需要始终将3个文件合并为参数(即使"base"不存在…)
刚刚测试过(事实证明,即使没有安装任何其他P4产品,您也只能下载和安装P4Merge——部分客户机/可视合并工具)。
使用上述设置,msysgit1.6.3、dos会话或git bash会话:它只起作用。
更新msysgit 1.7.x
Benjol在评论中提到:
p4merge is now supported natively by msysgit.
This means you can just do:
号
1 2 3 | git config --global merge.tool p4merge # and I recommend git config --global mergetool.keepBackup false |