无法使用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命令。

智能http

更聪明的协议(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设置。