Cannot push Git to remote repository with http/https

I have a Git repository in a directory served by apache on a server. I have configured WebDAV and it seems to be running correctly. Litmus returns 100% success.

I can clone my repository from a remote host, but when trying to push over http or https, I get the following error:

error: Cannot access URL https://git.example.com/repo/, return code 22 fatal: git-http-push failed

Any idea?


Edit the following section of your .git/config file:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://git.repository.url/repo.git

to

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://username:[email protected]/repo.git

Then try git push origin master.

Edit the authentication details in your config files for other repository URLs as required and push to the required branch.


It is highly suggested NOT to use WebDAV if possible. If you must use HTTP/HTTPS then usage of the git-http-backend CGI script is recommended over WebDAV.


As in this post comment, what does your /Web/git/Logs/ErrorLog says about that error?

After looking in /Web/git/Logs/ErrorLog, I found out there’s a permission problem on the lock file. In my httpd-dav.conf, I have the line…

DavLockDB “/usr/var/DavLock”

I then checked the /usr/ directory, the ‘var’ directory was missing.

$ mkdir var
$ cd var
$ chown www .
$ chgrp www .

And then repeating the process seems that now I can push!! =)


As mentioned by Eddie in the comments and by Arrowmaster in his (upvoted) answer, the smart http protocol is now part of recent Git distribution.
The git-http-backend CGI script can takes care of any git commands through http.

smart http

The smarter protocols (git and ssh) would instead have a conversation with the git upload-pack process on the server which would determine the exact set of objects the client needs and build a custom packfile with just those objects and stream it over.


Git 2.17 (Q2 2018) will add a debugging aid.

See commit a2b9820 (24 Jan 2018) by Patryk Obara (dreamer).
(Merged by Junio C Hamano -- gitster -- in commit 39a1dd8, 13 Feb 2018)

http-push: improve error log

When git push fails due to server-side WebDAV error, it's not easy to point to the main culprit.
Additional information about exact cURL error and HTTP server response is helpful for debugging purpose.


you might need to add the user as a member for the repository and possibly update permissions.

we had to do this with each member that will be contributing on our organizations github repository.


I've got the same problem, and found the solutions, maybe it will be useful for someone.
Here is my solution with git-http-backend configuration and ldap authentication.