无法使用http / https将Git推送到远程存储库
我有一个服务器上的apache服务的目录中的Git存储库。 我configuration了WebDAV,它似乎运行正常。 Litmus返回100%成功。
我可以从远程主机克隆我的存储库,但是当试图推翻http或https时,出现以下错误:
错误:无法访问URL https://git.example.com/repo/ ,返回代码22致命:git-http-push失败
任何想法?
如果可能,强烈build议不要使用WebDAV。 如果您必须使用HTTP / HTTPS,那么build议在WebDAV上使用git-http-backend CGI脚本。
编辑.git / config文件的以下部分:
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = http://git.repository.url/repo.git
至
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = http://username:password@git.repository.url/repo.git
然后尝试git push origin master
。
根据需要在您的configuration文件中编辑其他存储库URL的身份validation详细信息,并推送到所需的分支。
正如在这篇文章的评论中 ,你的/Web/git/Logs/ErrorLog
对这个错误说了些什么?
查看
/Web/git/Logs/ErrorLog
,我发现锁文件存在权限问题。 在我的httpd-dav.conf
,我有…
DavLockDB “/usr/var/DavLock”
然后我检查了
/usr/
目录,'var
'目录不见了。
$ mkdir var $ cd var $ chown www . $ chgrp www .
然后重复这个过程似乎现在我可以推! =)
正如Eddie在评论中和Arrowmaster在他的(upvoted) 回答中所提到的, 智能http协议现在是最近的Git发行版的一部分。
git-http-backend
CGI脚本可以通过http来照顾任何git命令。
更聪明的协议(git和ssh)将与服务器上的git upload-pack进程进行对话,这将决定客户端需要的对象的确切集合,然后用这些对象构build一个自定义的packfile并将其stream式传输。
您可能需要将该用户添加为存储库的成员,并可能需要更新权限。
我们必须对每个会员在我们组织的github存储库上做出贡献的情况下这样做。
我有同样的问题,并find解决办法,也许这将是有用的人。
这是我用git-http-backendconfiguration和ldapauthentication的解决scheme。
我有一个类似的问题,我可以使用HTTP协议从存储库中进行克隆和提取,但是我无法推送。 我通过下面的方法解决了这个问题。
我在项目的.git / config文件中更改了远程的url,以匹配GitHub的SSHurl。 然后我按照“ https://help.github.com/articles/generating-ssh-keys#platform-linux ”中的所有说明进行操作,并通过“ https://help.github.com/articles/error-permission ”进行故障排除-denied-publickey “。 最好的部分是我没有处理Apache或更改远程服务器上的任何HTTP设置。