the optional leading plus `+` is used, the remote ref is updated
even if it does not result in a fast forward update.
+
-Note: If no explicit refspec is found, (that is neither
-on the command line nor in any Push line of the
-corresponding remotes file---see below), then "matching" heads are
-pushed: for every head that exists on the local side, the remote side is
-updated if a head of the same name already exists on the remote side.
-+
`tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
+
A parameter <ref> without a colon pushes the <ref> from the source
+
Pushing an empty <src> allows you to delete the <dst> ref from
the remote repository.
-
-\--all::
++
+The special refspec `:` (or `+:` to allow non-fast forward updates)
+directs git to push "matching" heads: for every head that exists on
+the local side, the remote side is updated if a head of the same name
+already exists on the remote side. This is the default operation mode
+if no explicit refspec is found (that is neither on the command line
+nor in any Push line of the corresponding remotes file---see below).
+
+--all::
Instead of naming each ref to push, specifies that all
refs under `$GIT_DIR/refs/heads/` be pushed.
-\--mirror::
+--mirror::
Instead of naming each ref to push, specifies that all
refs under `$GIT_DIR/refs/heads/` and `$GIT_DIR/refs/tags/`
be mirrored to the remote repository. Newly created local
if the configuration option `remote.<remote>.mirror` is
set.
-\--dry-run::
+--dry-run::
Do everything except actually send the updates.
-\--tags::
+--tags::
All refs under `$GIT_DIR/refs/tags` are pushed, in
addition to refspecs explicitly listed on the command
line.
-\--receive-pack=<git-receive-pack>::
+--receive-pack=<git-receive-pack>::
Path to the 'git-receive-pack' program on the remote
end. Sometimes useful when pushing to a remote
repository over ssh, and you do not have the program in
a directory on the default $PATH.
-\--exec=<git-receive-pack>::
+--exec=<git-receive-pack>::
Same as \--receive-pack=<git-receive-pack>.
--f, \--force::
+-f::
+--force::
Usually, the command refuses to update a remote ref that is
not an ancestor of the local ref used to overwrite it.
This flag disables the check. This can cause the
remote repository to lose commits; use it with care.
-\--repo=<repo>::
+--repo=<repo>::
When no repository is specified the command defaults to
"origin"; this overrides it.
-\--thin, \--no-thin::
+--thin::
+--no-thin::
These options are passed to `git-send-pack`. Thin
transfer spends extra cycles to minimize the number of
objects to be sent and meant to be used on slower connection.
--v, \--verbose::
+-v::
+--verbose::
Run verbosely.
include::urls-remotes.txt[]
GIT
---
-Part of the linkgit:git[7] suite
+Part of the linkgit:git[1] suite