Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
p4merge错误[GIT]_Git_Perforce_Git P4_P4merge - Fatal编程技术网

p4merge错误[GIT]

p4merge错误[GIT],git,perforce,git-p4,p4merge,Git,Perforce,Git P4,P4merge,我正在尝试将p4merge与git结合使用,但我得到了: 启动p4merge时出错:“path/myFile”是(或指向)无效文件(列出了文件的基本、本地、远程和标准版本) Git告诉我冲突的情况,然后它询问我是否要启动配置的mergetool(p4merge),然后我得到上面的错误 附加说明:任何文件都会发生这种情况 关于这是什么以及如何修复它的任何线索?您将看到我对DiffMerge或KDiff3的配置 基于此,我建议您: git config--global merge.tool merg

我正在尝试将p4merge与git结合使用,但我得到了:

启动p4merge时出错:“path/myFile”是(或指向)无效文件(列出了文件的基本、本地、远程和标准版本)

Git告诉我冲突的情况,然后它询问我是否要启动配置的mergetool(p4merge),然后我得到上面的错误

附加说明:任何文件都会发生这种情况

关于这是什么以及如何修复它的任何线索?

您将看到我对DiffMerge或KDiff3的配置

基于此,我建议您:

git config--global merge.tool merge git config--global mergetool.merge.cmd“merge.sh\”$PWD/$LOCAL\“\”$PWD/$BASE\“\”$PWD/$REMOTE\“\”“$PWD/$MERGED\” 和
merge.sh
作为包装器(复制到
PATH
环境变量引用的目录中),能够考虑不存在
BASE
的情况。
(当在合并的两个不同分支中创建文件时,该文件将没有共同的祖先)

#/垃圾箱/垃圾箱
#将以下参数传递给mergetool:
#本地基远程合并结果
alocal=1美元
基数=$2
遥控=3美元
结果=$4
如果[-f$base]
然后
p4merge.exe-dl“$base”“$alocal”“$remote”“$result”
其他的
p4merge.exe-dl“$result”“$alocal”“$remote”“$result”
fi
你可能会注意到:

  • 在合并配置中使用
    PWD
  • 使用“
    merge
    ”作为merge.tool名称(因为实际工具是在
    merge.sh
    脚本中调用的,您可以在任意数量的合并工具之间切换)
  • 脚本中围绕
    $base
    $alocal
    $remote
    $result
    使用双引号
  • 基于“基本”文件的存在,调用工具的条件路径
  • 需要始终有3个文件作为参数合并(即使“base”不存在…)

刚刚对它进行了测试(结果表明,即使没有安装任何其他P4产品,您也可以--section Client/visualmerge Tool--)

使用上述设置,MSysGit1.6.3、DOS会话或Git bash会话:
它只是工作TM


更新msysgit 1.7.x

评论中提到:

p4merge现在由msysgit本机支持

这意味着您可以:

git config--global merge.tool p4merge #我推荐 git config--全局合并工具.keepBackup false
这对我在windows 7上使用msysGit很有效:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'

不知道为什么,但报价把我搞砸了。

也许可以在.gitconfig中包含您配置合并工具和完整错误消息的部分?你的文件名中有空格吗?没有,文件名中没有空格-我用这个问题配置了git:你的文件可能重复“merge.sh在第一个代码块的第二行中出现两次,但经过更正后,一切正常。谢谢我刚刚在一台新机器上又试了一次。在我看来,如果从bash设置配置,
$PWD
$LOCAL
变量将在配置文件中展开。我不得不去手动编辑
%USERPROFILE$\.gitconfig
文件。也许是我的错误,但以防万一其他人也有同样的问题。@Benjol:有趣的是,我也会再次测试它。你的新机器和你第一次试的不同吗?(更新的操作系统?)@VonC,Vista,是的。另一个值得一提的调整是
keepBackup=false
(.orig文件让我抓狂)注意:根据第三条评论,p4merge现在由msysgit本机支持。我不确定从哪个版本开始。这意味着您可以使用git bash从一台Win 8机器切换到另一台Win 8机器,并且还必须这样做,谢谢!我想我应该提到我使用了Powershell,所以我对cmd.exe不太清楚。我在windows命令提示符下使用了
git config--global mergetool.p4merge.cmd'“C:\Install Dir Has Spaces\p4merge.exe”$BASE$LOCAL$REMOTE$MERGED'
,第二个命令没有指出错误用法。所以我在GitBash上执行了这个命令,它成功了。我在Mac终端上执行了这个操作,现在我得到了这个错误:“p4merge:command not found”。有什么建议吗?