table of contents
- bullseye 1:2.30.2-1
- bullseye-backports 1:2.39.2-1~bpo11+1
- testing 1:2.39.2-1.1
- unstable 1:2.40.1-1
- experimental 1:2.40.1+next.20230427-1
git-send-pack - Push objects over Git protocol to another repository
git send-pack [--mirror] [--dry-run] [--force]
[--verbose] [--thin] [--atomic]
[--[no-]signed | --signed=(true|false|if-asked)]
[<host>:]<directory> (--all | <ref>...)
Usually you would want to use git push, which is a higher-level wrapper of this command, instead. See git-push(1).
Invokes git-receive-pack on a possibly remote repository, and updates it from the current repository, sending named refs.
If --stateless-rpc is specified together with this option then the list of refs must be in packet format (pkt-line). Each ref must be in a separate packet, and the list must end with a flush packet.
SPECIFYING THE REFS¶
There are three ways to specify which refs to update on the remote end.
With --all flag, all refs that exist locally are transferred to the remote side. You cannot specify any <ref> if you use this flag.
Without --all and without any <ref>, the heads that exist both on the local side and on the remote side are updated.
When one or more <ref> are specified explicitly (whether on the command line or via --stdin), it can be either a single pattern, or a pair of such pattern separated by a colon ":" (this means that a ref name cannot have a colon in it). A single pattern <name> is just a shorthand for <name>:<name>.
Each pattern pair consists of the source side (before the colon) and the destination side (after the colon). The ref to be pushed is determined by finding a match that matches the source side, and where it is pushed is determined by using the destination side. The rules used to match a ref are the same rules used by git rev-parse to resolve a symbolic ref name. See git-rev-parse(1).
Without ‘--force`, the <src> ref is stored at the remote only if <dst> does not exist, or <dst> is a proper subset (i.e. an ancestor) of <src>. This check, known as "fast-forward check", is performed in order to avoid accidentally overwriting the remote ref and lose other peoples’ commits from there.
With --force, the fast-forward check is disabled for all refs.
Optionally, a <ref> parameter can be prefixed with a plus + sign to disable the fast-forward check only on that ref.
Part of the git(1) suite