is not an ancestor of the local ref used to overwrite it.
This flag disables the check. This means that
the remote repository can lose commits; use it with
care.
--verbose::
Run verbosely.
--thin::
Send a "thin" pack, which records objects in deltified form based
on objects not included in the pack to reduce network traffic.
--atomic::
Use an atomic transaction for updating the refs. If any of the refs
fails to update then the entire push will fail without changing any
refs.
--[no-]signed::
--signed=(true|false|if-asked)::
GPG-sign the push request to update refs on the receiving
side, to allow it to be checked by the hooks and/or be
logged. If `false` or `--no-signed`, no signing will be
attempted. If `true` or `--signed`, the push will fail if the
server does not support signed pushes. If set to `if-asked`,
sign if and only if the server supports signed pushes. The push
will also fail if the actual call to `gpg --sign` fails. See
linkgit:git-receive-pack[1] for the details on the receiving end.
--push-option=<string>::
Pass the specified string as a push option for consumption by
hooks on the server side. If the server doesn't support push
options, error out. See linkgit:git-push[1] and
linkgit:githooks[5] for details.
<host>::
A remote host to house the repository. When this
part is specified, 'git-receive-pack' is invoked via
ssh.
<directory>::
The repository to update.
<ref>...::
The remote refs to update.
SPECIFYING THE REFS
-------------------
There are three ways to specify which refs to update on the
remote end.
With the `--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 patterns separated by a colon
":" (this means that a ref name cannot have a colon in it). A
single pattern '<name>' is just 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 linkgit:git-rev-parse[1].
- It is an error if <src> does not match exactly one of the
local refs.
- It is an error if <dst> matches more than one remote ref.
- If <dst> does not match any remote ref, either
* it has to start with "refs/"; <dst> is used as the
destination literally in this case.
* <src> == <dst> and the ref that matched the <src> must not
exist in the set of remote refs; the ref matched <src>
locally is used as the name of the destination.
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 the "fast-forward check",
is performed to avoid accidentally overwriting the
remote ref and losing other people's 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.
GIT
---
Part of the linkgit:git[1] suite