Object-by-object upload over plain HTTP. Almost never wanted.
git http-push uploads objects and updates refs over plain HTTP using WebDAV-style PUT/MOVE/DELETE. It is the writing counterpart to git http-fetch and exists only because dumb HTTP has no receive-pack.
Imagine using curl -X PUT to copy each loose object into the remote's objects/ tree, then PUT-ing the new ref file. That is literally what this does. There is no negotiation, no atomic transaction, and no hooks fire on the server.
git http-push [--all] [--dry-run] [--force] [--verbose]
[-D] [-d] <url> <ref> [<ref>...]
Requires a WebDAV-enabled HTTP server. Writes objects under `objects/` and rewrites ref files under `refs/`. No server-side validation.| Flag | What it does |
|---|---|
<url> <refs> | Remote base URL and one or more refs to push (e.g. refs/heads/main). |
-D | ⚠️ Delete the named refs on the remote (with -d, expects ref:dst form). |
-d | Same as -D but using the <src>:<dst> refspec form. |
-f, --force | ⚠️ Allow non-fast-forward updates -- overwrites history on the remote. |
--all | Push all refs under refs/heads/. |
-v, --verbose | Print each object/ref operation as it happens. |
--dry-run | Show what would be sent without uploading anything. |
git http-backend.git http-push http://127.0.0.1/repo.git/ refs/heads/maingit http-push --force --all http://127.0.0.1/repo.git/git http-push -D http://127.0.0.1/repo.git/ refs/heads/old-topicgit http-push --dry-run -v http://127.0.0.1/repo.git/ refs/heads/maingit http-backend (smart HTTP) or push via ssh.--dry-run -v first -- there are no server hooks to catch a bad push.objects/ and refs/ -- a security footgun if misconfigured.Hit each option, then Check answers. Score is recorded; Next is always open.