'\" t
.\"     Title: git-push
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 2024-04-25
.\"    Manual: Git Manual
.\"    Source: Git 2.45.0.rc1.8.ge326e52010
.\"  Language: English
.\"
.TH "GIT\-PUSH" "1" "2024\-04\-25" "Git 2\&.45\&.0\&.rc1\&.8\&.ge3" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-push \- Update remote refs along with associated objects
.SH "SYNOPSIS"
.sp
.nf
\fIgit push\fR [\-\-all | \-\-branches | \-\-mirror | \-\-tags] [\-\-follow\-tags] [\-\-atomic] [\-n | \-\-dry\-run] [\-\-receive\-pack=<git\-receive\-pack>]
           [\-\-repo=<repository>] [\-f | \-\-force] [\-d | \-\-delete] [\-\-prune] [\-q | \-\-quiet] [\-v | \-\-verbose]
           [\-u | \-\-set\-upstream] [\-o <string> | \-\-push\-option=<string>]
           [\-\-[no\-]signed|\-\-signed=(true|false|if\-asked)]
           [\-\-force\-with\-lease[=<refname>[:<expect>]] [\-\-force\-if\-includes]]
           [\-\-no\-verify] [<repository> [<refspec>\&...]]
.fi
.sp
.SH "DESCRIPTION"
.sp
Updates remote refs using local refs, while sending objects necessary to complete the given refs\&.
.sp
You can make interesting things happen to a repository every time you push into it, by setting up \fIhooks\fR there\&. See documentation for \fBgit-receive-pack\fR(1)\&.
.sp
When the command line does not specify where to push with the \fB<repository>\fR argument, \fBbranch\&.*\&.remote\fR configuration for the current branch is consulted to determine where to push\&. If the configuration is missing, it defaults to \fIorigin\fR\&.
.sp
When the command line does not specify what to push with \fB<refspec>\&.\&.\&.\fR arguments or \fB\-\-all\fR, \fB\-\-mirror\fR, \fB\-\-tags\fR options, the command finds the default \fB<refspec>\fR by consulting \fBremote\&.*\&.push\fR configuration, and if it is not found, honors \fBpush\&.default\fR configuration to decide what to push (See \fBgit-config\fR(1) for the meaning of \fBpush\&.default\fR)\&.
.sp
When neither the command\-line nor the configuration specifies what to push, the default behavior is used, which corresponds to the \fBsimple\fR value for \fBpush\&.default\fR: the current branch is pushed to the corresponding upstream branch, but as a safety measure, the push is aborted if the upstream branch does not have the same name as the local one\&.
.SH "OPTIONS"
.PP
<repository>
.RS 4
The "remote" repository that is the destination of a push operation\&. This parameter can be either a URL (see the section
GIT URLS
below) or the name of a remote (see the section
REMOTES
below)\&.
.RE
.PP
<refspec>\&...
.RS 4
Specify what destination ref to update with what source object\&. The format of a <refspec> parameter is an optional plus
\fB+\fR, followed by the source object <src>, followed by a colon
\fB:\fR, followed by the destination ref <dst>\&.
.sp
The <src> is often the name of the branch you would want to push, but it can be any arbitrary "SHA\-1 expression", such as
\fBmaster~4\fR
or
\fBHEAD\fR
(see
\fBgitrevisions\fR(7))\&.
.sp
The <dst> tells which ref on the remote side is updated with this push\&. Arbitrary expressions cannot be used here, an actual ref must be named\&. If
\fBgit push [<repository>]\fR
without any
\fB<refspec>\fR
argument is set to update some ref at the destination with
\fB<src>\fR
with
\fBremote\&.<repository>\&.push\fR
configuration variable,
\fB:<dst>\fR
part can be omitted\(emsuch a push will update a ref that
\fB<src>\fR
normally updates without any
\fB<refspec>\fR
on the command line\&. Otherwise, missing
\fB:<dst>\fR
means to update the same ref as the
\fB<src>\fR\&.
.sp
If <dst> doesn\(cqt start with
\fBrefs/\fR
(e\&.g\&.
\fBrefs/heads/master\fR) we will try to infer where in
\fBrefs/*\fR
on the destination <repository> it belongs based on the type of <src> being pushed and whether <dst> is ambiguous\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If <dst> unambiguously refers to a ref on the <repository> remote, then push to that ref\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If <src> resolves to a ref starting with refs/heads/ or refs/tags/, then prepend that to <dst>\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Other ambiguity resolutions might be added in the future, but for now any other cases will error out with an error indicating what we tried, and depending on the
\fBadvice\&.pushUnqualifiedRefname\fR
configuration (see
\fBgit-config\fR(1)) suggest what refs/ namespace you may have wanted to push to\&.
.RE
.sp
The object referenced by <src> is used to update the <dst> reference on the remote side\&. Whether this is allowed depends on where in
\fBrefs/*\fR
the <dst> reference lives as described in detail below, in those sections "update" means any modifications except deletes, which as noted after the next few sections are treated differently\&.
.sp
The
\fBrefs/heads/*\fR
namespace will only accept commit objects, and updates only if they can be fast\-forwarded\&.
.sp
The
\fBrefs/tags/*\fR
namespace will accept any kind of object (as commits, trees and blobs can be tagged), and any updates to them will be rejected\&.
.sp
It\(cqs possible to push any type of object to any namespace outside of
\fBrefs/{tags,heads}/*\fR\&. In the case of tags and commits, these will be treated as if they were the commits inside
\fBrefs/heads/*\fR
for the purposes of whether the update is allowed\&.
.sp
I\&.e\&. a fast\-forward of commits and tags outside
\fBrefs/{tags,heads}/*\fR
is allowed, even in cases where what\(cqs being fast\-forwarded is not a commit, but a tag object which happens to point to a new commit which is a fast\-forward of the commit the last tag (or commit) it\(cqs replacing\&. Replacing a tag with an entirely different tag is also allowed, if it points to the same commit, as well as pushing a peeled tag, i\&.e\&. pushing the commit that existing tag object points to, or a new tag object which an existing commit points to\&.
.sp
Tree and blob objects outside of
\fBrefs/{tags,heads}/*\fR
will be treated the same way as if they were inside
\fBrefs/tags/*\fR, any update of them will be rejected\&.
.sp
All of the rules described above about what\(cqs not allowed as an update can be overridden by adding an the optional leading
\fB+\fR
to a refspec (or using
\fB\-\-force\fR
command line option)\&. The only exception to this is that no amount of forcing will make the
\fBrefs/heads/*\fR
namespace accept a non\-commit object\&. Hooks and configuration can also override or amend these rules, see e\&.g\&.
\fBreceive\&.denyNonFastForwards\fR
in
\fBgit-config\fR(1)
and
\fBpre\-receive\fR
and
\fBupdate\fR
in
\fBgithooks\fR(5)\&.
.sp
Pushing an empty <src> allows you to delete the <dst> ref from the remote repository\&. Deletions are always accepted without a leading
\fB+\fR
in the refspec (or
\fB\-\-force\fR), except when forbidden by configuration or hooks\&. See
\fBreceive\&.denyDeletes\fR
in
\fBgit-config\fR(1)
and
\fBpre\-receive\fR
and
\fBupdate\fR
in
\fBgithooks\fR(5)\&.
.sp
The special refspec
\fB:\fR
(or
\fB+:\fR
to allow non\-fast\-forward updates) directs Git to push "matching" branches: for every branch that exists on the local side, the remote side is updated if a branch of the same name already exists on the remote side\&.
.sp
\fBtag <tag>\fR
means the same as
\fBrefs/tags/<tag>:refs/tags/<tag>\fR\&.
.RE
.PP
\-\-all, \-\-branches
.RS 4
Push all branches (i\&.e\&. refs under
\fBrefs/heads/\fR); cannot be used with other <refspec>\&.
.RE
.PP
\-\-prune
.RS 4
Remove remote branches that don\(cqt have a local counterpart\&. For example a remote branch
\fBtmp\fR
will be removed if a local branch with the same name doesn\(cqt exist any more\&. This also respects refspecs, e\&.g\&.
\fBgit push \-\-prune remote refs/heads/*:refs/tmp/*\fR
would make sure that remote
\fBrefs/tmp/foo\fR
will be removed if
\fBrefs/heads/foo\fR
doesn\(cqt exist\&.
.RE
.PP
\-\-mirror
.RS 4
Instead of naming each ref to push, specifies that all refs under
\fBrefs/\fR
(which includes but is not limited to
\fBrefs/heads/\fR,
\fBrefs/remotes/\fR, and
\fBrefs/tags/\fR) be mirrored to the remote repository\&. Newly created local refs will be pushed to the remote end, locally updated refs will be force updated on the remote end, and deleted refs will be removed from the remote end\&. This is the default if the configuration option
\fBremote\&.<remote>\&.mirror\fR
is set\&.
.RE
.PP
\-n, \-\-dry\-run
.RS 4
Do everything except actually send the updates\&.
.RE
.PP
\-\-porcelain
.RS 4
Produce machine\-readable output\&. The output status line for each ref will be tab\-separated and sent to stdout instead of stderr\&. The full symbolic names of the refs will be given\&.
.RE
.PP
\-d, \-\-delete
.RS 4
All listed refs are deleted from the remote repository\&. This is the same as prefixing all refs with a colon\&.
.RE
.PP
\-\-tags
.RS 4
All refs under
\fBrefs/tags\fR
are pushed, in addition to refspecs explicitly listed on the command line\&.
.RE
.PP
\-\-follow\-tags
.RS 4
Push all the refs that would be pushed without this option, and also push annotated tags in
\fBrefs/tags\fR
that are missing from the remote but are pointing at commit\-ish that are reachable from the refs being pushed\&. This can also be specified with configuration variable
\fBpush\&.followTags\fR\&. For more information, see
\fBpush\&.followTags\fR
in
\fBgit-config\fR(1)\&.
.RE
.PP
\-\-[no\-]signed, \-\-signed=(true|false|if\-asked)
.RS 4
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
\fBfalse\fR
or
\fB\-\-no\-signed\fR, no signing will be attempted\&. If
\fBtrue\fR
or
\fB\-\-signed\fR, the push will fail if the server does not support signed pushes\&. If set to
\fBif\-asked\fR, sign if and only if the server supports signed pushes\&. The push will also fail if the actual call to
\fBgpg \-\-sign\fR
fails\&. See
\fBgit-receive-pack\fR(1)
for the details on the receiving end\&.
.RE
.PP
\-\-[no\-]atomic
.RS 4
Use an atomic transaction on the remote side if available\&. Either all refs are updated, or on error, no refs are updated\&. If the server does not support atomic pushes the push will fail\&.
.RE
.PP
\-o <option>, \-\-push\-option=<option>
.RS 4
Transmit the given string to the server, which passes them to the pre\-receive as well as the post\-receive hook\&. The given string must not contain a NUL or LF character\&. When multiple
\fB\-\-push\-option=<option>\fR
are given, they are all sent to the other side in the order listed on the command line\&. When no
\fB\-\-push\-option=<option>\fR
is given from the command line, the values of configuration variable
\fBpush\&.pushOption\fR
are used instead\&.
.RE
.PP
\-\-receive\-pack=<git\-receive\-pack>, \-\-exec=<git\-receive\-pack>
.RS 4
Path to the
\fIgit\-receive\-pack\fR
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\&.
.RE
.PP
\-\-[no\-]force\-with\-lease, \-\-force\-with\-lease=<refname>, \-\-force\-with\-lease=<refname>:<expect>
.RS 4
Usually, "git push" refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it\&.
.sp
This option overrides this restriction if the current value of the remote ref is the expected value\&. "git push" fails otherwise\&.
.sp
Imagine that you have to rebase what you have already published\&. You will have to bypass the "must fast\-forward" rule in order to replace the history you originally published with the rebased history\&. If somebody else built on top of your original history while you are rebasing, the tip of the branch at the remote may advance with their commit, and blindly pushing with
\fB\-\-force\fR
will lose their work\&.
.sp
This option allows you to say that you expect the history you are updating is what you rebased and want to replace\&. If the remote ref still points at the commit you specified, you can be sure that no other people did anything to the ref\&. It is like taking a "lease" on the ref without explicitly locking it, and the remote ref is updated only if the "lease" is still valid\&.
.sp
\fB\-\-force\-with\-lease\fR
alone, without specifying the details, will protect all remote refs that are going to be updated by requiring their current value to be the same as the remote\-tracking branch we have for them\&.
.sp
\fB\-\-force\-with\-lease=<refname>\fR, without specifying the expected value, will protect the named ref (alone), if it is going to be updated, by requiring its current value to be the same as the remote\-tracking branch we have for it\&.
.sp
\fB\-\-force\-with\-lease=<refname>:<expect>\fR
will protect the named ref (alone), if it is going to be updated, by requiring its current value to be the same as the specified value
\fB<expect>\fR
(which is allowed to be different from the remote\-tracking branch we have for the refname, or we do not even have to have such a remote\-tracking branch when this form is used)\&. If
\fB<expect>\fR
is the empty string, then the named ref must not already exist\&.
.sp
Note that all forms other than
\fB\-\-force\-with\-lease=<refname>:<expect>\fR
that specifies the expected current value of the ref explicitly are still experimental and their semantics may change as we gain experience with this feature\&.
.sp
"\-\-no\-force\-with\-lease" will cancel all the previous \-\-force\-with\-lease on the command line\&.
.sp
A general note on safety: supplying this option without an expected value, i\&.e\&. as
\fB\-\-force\-with\-lease\fR
or
\fB\-\-force\-with\-lease=<refname>\fR
interacts very badly with anything that implicitly runs
\fBgit fetch\fR
on the remote to be pushed to in the background, e\&.g\&.
\fBgit fetch origin\fR
on your repository in a cronjob\&.
.sp
The protection it offers over
\fB\-\-force\fR
is ensuring that subsequent changes your work wasn\(cqt based on aren\(cqt clobbered, but this is trivially defeated if some background process is updating refs in the background\&. We don\(cqt have anything except the remote tracking info to go by as a heuristic for refs you\(cqre expected to have seen & are willing to clobber\&.
.sp
If your editor or some other system is running
\fBgit fetch\fR
in the background for you a way to mitigate this is to simply set up another remote:
.sp
.if n \{\
.RS 4
.\}
.nf
git remote add origin\-push $(git config remote\&.origin\&.url)
git fetch origin\-push
.fi
.if n \{\
.RE
.\}
.sp
Now when the background process runs
\fBgit fetch origin\fR
the references on
\fBorigin\-push\fR
won\(cqt be updated, and thus commands like:
.sp
.if n \{\
.RS 4
.\}
.nf
git push \-\-force\-with\-lease origin\-push
.fi
.if n \{\
.RE
.\}
.sp
Will fail unless you manually run
\fBgit fetch origin\-push\fR\&. This method is of course entirely defeated by something that runs
\fBgit fetch \-\-all\fR, in that case you\(cqd need to either disable it or do something more tedious like:
.sp
.if n \{\
.RS 4
.\}
.nf
git fetch              # update \*(Aqmaster\*(Aq from remote
git tag base master    # mark our base point
git rebase \-i master   # rewrite some commits
git push \-\-force\-with\-lease=master:base master:master
.fi
.if n \{\
.RE
.\}
.sp
I\&.e\&. create a
\fBbase\fR
tag for versions of the upstream code that you\(cqve seen and are willing to overwrite, then rewrite history, and finally force push changes to
\fBmaster\fR
if the remote version is still at
\fBbase\fR, regardless of what your local
\fBremotes/origin/master\fR
has been updated to in the background\&.
.sp
Alternatively, specifying
\fB\-\-force\-if\-includes\fR
as an ancillary option along with
\fB\-\-force\-with\-lease[=<refname>]\fR
(i\&.e\&., without saying what exact commit the ref on the remote side must be pointing at, or which refs on the remote side are being protected) at the time of "push" will verify if updates from the remote\-tracking refs that may have been implicitly updated in the background are integrated locally before allowing a forced update\&.
.RE
.PP
\-f, \-\-force
.RS 4
Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it\&. Also, when
\fB\-\-force\-with\-lease\fR
option is used, the command refuses to update a remote ref whose current value does not match what is expected\&.
.sp
This flag disables these checks, and can cause the remote repository to lose commits; use it with care\&.
.sp
Note that
\fB\-\-force\fR
applies to all the refs that are pushed, hence using it with
\fBpush\&.default\fR
set to
\fBmatching\fR
or with multiple push destinations configured with
\fBremote\&.*\&.push\fR
may overwrite refs other than the current branch (including local refs that are strictly behind their remote counterpart)\&. To force a push to only one branch, use a
\fB+\fR
in front of the refspec to push (e\&.g
\fBgit push origin +master\fR
to force a push to the
\fBmaster\fR
branch)\&. See the
\fB<refspec>\&.\&.\&.\fR
section above for details\&.
.RE
.PP
\-\-[no\-]force\-if\-includes
.RS 4
Force an update only if the tip of the remote\-tracking ref has been integrated locally\&.
.sp
This option enables a check that verifies if the tip of the remote\-tracking ref is reachable from one of the "reflog" entries of the local branch based in it for a rewrite\&. The check ensures that any updates from the remote have been incorporated locally by rejecting the forced update if that is not the case\&.
.sp
If the option is passed without specifying
\fB\-\-force\-with\-lease\fR, or specified along with
\fB\-\-force\-with\-lease=<refname>:<expect>\fR, it is a "no\-op"\&.
.sp
Specifying
\fB\-\-no\-force\-if\-includes\fR
disables this behavior\&.
.RE
.PP
\-\-repo=<repository>
.RS 4
This option is equivalent to the <repository> argument\&. If both are specified, the command\-line argument takes precedence\&.
.RE
.PP
\-u, \-\-set\-upstream
.RS 4
For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument\-less
\fBgit-pull\fR(1)
and other commands\&. For more information, see
\fBbranch\&.<name>\&.merge\fR
in
\fBgit-config\fR(1)\&.
.RE
.PP
\-\-[no\-]thin
.RS 4
These options are passed to
\fBgit-send-pack\fR(1)\&. A thin transfer significantly reduces the amount of sent data when the sender and receiver share many of the same objects in common\&. The default is
\fB\-\-thin\fR\&.
.RE
.PP
\-q, \-\-quiet
.RS 4
Suppress all output, including the listing of updated refs, unless an error occurs\&. Progress is not reported to the standard error stream\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Run verbosely\&.
.RE
.PP
\-\-progress
.RS 4
Progress status is reported on the standard error stream by default when it is attached to a terminal, unless \-q is specified\&. This flag forces progress status even if the standard error stream is not directed to a terminal\&.
.RE
.PP
\-\-no\-recurse\-submodules, \-\-recurse\-submodules=check|on\-demand|only|no
.RS 4
May be used to make sure all submodule commits used by the revisions to be pushed are available on a remote\-tracking branch\&. If
\fIcheck\fR
is used Git will verify that all submodule commits that changed in the revisions to be pushed are available on at least one remote of the submodule\&. If any commits are missing the push will be aborted and exit with non\-zero status\&. If
\fIon\-demand\fR
is used all submodules that changed in the revisions to be pushed will be pushed\&. If on\-demand was not able to push all necessary revisions it will also be aborted and exit with non\-zero status\&. If
\fIonly\fR
is used all submodules will be pushed while the superproject is left unpushed\&. A value of
\fIno\fR
or using
\fB\-\-no\-recurse\-submodules\fR
can be used to override the push\&.recurseSubmodules configuration variable when no submodule recursion is required\&.
.sp
When using
\fIon\-demand\fR
or
\fIonly\fR, if a submodule has a "push\&.recurseSubmodules={on\-demand,only}" or "submodule\&.recurse" configuration, further recursion will occur\&. In this case, "only" is treated as "on\-demand"\&.
.RE
.PP
\-\-[no\-]verify
.RS 4
Toggle the pre\-push hook (see
\fBgithooks\fR(5))\&. The default is \-\-verify, giving the hook a chance to prevent the push\&. With \-\-no\-verify, the hook is bypassed completely\&.
.RE
.PP
\-4, \-\-ipv4
.RS 4
Use IPv4 addresses only, ignoring IPv6 addresses\&.
.RE
.PP
\-6, \-\-ipv6
.RS 4
Use IPv6 addresses only, ignoring IPv4 addresses\&.
.RE
.SH "GIT URLS"
.sp
In general, URLs contain information about the transport protocol, the address of the remote server, and the path to the repository\&. Depending on the transport protocol, some of this information may be absent\&.
.sp
Git supports ssh, git, http, and https protocols (in addition, ftp and ftps can be used for fetching, but this is inefficient and deprecated; do not use them)\&.
.sp
The native transport (i\&.e\&. git:// URL) does no authentication and should be used with caution on unsecured networks\&.
.sp
The following syntaxes may be used with them:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBssh://\fR[\fI<user>\fR\fB@\fR]\fI<host>\fR[\fB:\fR\fI<port>\fR]\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBgit://\fR\fI<host>\fR[:\fI<port>\fR]\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBhttp\fR[\fBs\fR]\fB://\fR\fI<host>\fR[\fB:\fR\fI<port>\fR]\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBftp\fR[\fBs\fR]\fB://\fR\fI<host>\fR[\fB:\fR\fI<port>\fR]\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
An alternative scp\-like syntax may also be used with the ssh protocol:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
[\fI<user>\fR\fB@\fR]\fI<host>\fR\fB:/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
This syntax is only recognized if there are no slashes before the first colon\&. This helps differentiate a local path that contains a colon\&. For example the local path \fBfoo:bar\fR could be specified as an absolute path or \fB\&./foo:bar\fR to avoid being misinterpreted as an ssh url\&.
.sp
The ssh and git protocols additionally support \fB~\fR\fI<username>\fR expansion:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBssh://\fR[\fI<user>\fR\fB@\fR]\fI<host>\fR[\fB:\fR\fI<port>\fR]\fB/~\fR\fI<user>\fR\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBgit://\fR\fI<host>\fR[\fB:\fR\fI<port>\fR]\fB/~\fR\fI<user>\fR\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
[\fI<user>\fR\fB@\fR]\fI<host>\fR\fB:~\fR\fI<user>\fR\fB/\fR\fI<path\-to\-git\-repo>\fR
.RE
.sp
For local repositories, also supported by Git natively, the following syntaxes may be used:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fB/path/to/repo\&.git/\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBfile:///path/to/repo\&.git/\fR
.RE
.sp
These two syntaxes are mostly equivalent, except when cloning, when the former implies \fB\-\-local\fR option\&. See \fBgit-clone\fR(1) for details\&.
.sp
\fBgit clone\fR, \fBgit fetch\fR and \fBgit pull\fR, but not \fBgit push\fR, will also accept a suitable bundle file\&. See \fBgit-bundle\fR(1)\&.
.sp
When Git doesn\(cqt know how to handle a certain transport protocol, it attempts to use the \fBremote\-\fR\fI<transport>\fR remote helper, if one exists\&. To explicitly request a remote helper, the following syntax may be used:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fI<transport>\fR::\fI<address>\fR
.RE
.sp
where \fI<address>\fR may be a path, a server and path, or an arbitrary URL\-like string recognized by the specific remote helper being invoked\&. See \fBgitremote-helpers\fR(7) for details\&.
.sp
If there are a large number of similarly\-named remote repositories and you want to use a different format for them (such that the URLs you use will be rewritten into URLs that work), you can create a configuration section of the form:
.sp
.if n \{\
.RS 4
.\}
.nf
        [url "\fI<actual\-url\-base>\fR"]
                insteadOf = \fI<other\-url\-base>\fR
.fi
.if n \{\
.RE
.\}
.sp
.sp
For example, with this:
.sp
.if n \{\
.RS 4
.\}
.nf
        [url "git://git\&.host\&.xz/"]
                insteadOf = host\&.xz:/path/to/
                insteadOf = work:
.fi
.if n \{\
.RE
.\}
.sp
.sp
a URL like "work:repo\&.git" or like "host\&.xz:/path/to/repo\&.git" will be rewritten in any context that takes a URL to be "git://git\&.host\&.xz/repo\&.git"\&.
.sp
If you want to rewrite URLs for push only, you can create a configuration section of the form:
.sp
.if n \{\
.RS 4
.\}
.nf
        [url "\fI<actual\-url\-base>\fR"]
                pushInsteadOf = \fI<other\-url\-base>\fR
.fi
.if n \{\
.RE
.\}
.sp
.sp
For example, with this:
.sp
.if n \{\
.RS 4
.\}
.nf
        [url "ssh://example\&.org/"]
                pushInsteadOf = git://example\&.org/
.fi
.if n \{\
.RE
.\}
.sp
.sp
a URL like "git://example\&.org/path/to/repo\&.git" will be rewritten to "ssh://example\&.org/path/to/repo\&.git" for pushes, but pulls will still use the original URL\&.
.SH "REMOTES"
.sp
The name of one of the following can be used instead of a URL as \fB<repository>\fR argument:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a remote in the Git configuration file:
\fB$GIT_DIR/config\fR,
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a file in the
\fB$GIT_DIR/remotes\fR
directory, or
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a file in the
\fB$GIT_DIR/branches\fR
directory\&.
.RE
.sp
All of these also allow you to omit the refspec from the command line because they each contain a refspec which git will use by default\&.
.SS "Named remote in configuration file"
.sp
You can choose to provide the name of a remote which you had previously configured using \fBgit-remote\fR(1), \fBgit-config\fR(1) or even by a manual edit to the \fB$GIT_DIR/config\fR file\&. The URL of this remote will be used to access the repository\&. The refspec of this remote will be used by default when you do not provide a refspec on the command line\&. The entry in the config file would appear like this:
.sp
.if n \{\
.RS 4
.\}
.nf
        [remote "<name>"]
                url = <URL>
                pushurl = <pushurl>
                push = <refspec>
                fetch = <refspec>
.fi
.if n \{\
.RE
.\}
.sp
.sp
The \fB<pushurl>\fR is used for pushes only\&. It is optional and defaults to \fB<URL>\fR\&. Pushing to a remote affects all defined pushurls or all defined urls if no pushurls are defined\&. Fetch, however, will only fetch from the first defined url if multiple urls are defined\&.
.SS "Named file in \fB$GIT_DIR/remotes\fR"
.sp
You can choose to provide the name of a file in \fB$GIT_DIR/remotes\fR\&. The URL in this file will be used to access the repository\&. The refspec in this file will be used as default when you do not provide a refspec on the command line\&. This file should have the following format:
.sp
.if n \{\
.RS 4
.\}
.nf
        URL: one of the above URL formats
        Push: <refspec>
        Pull: <refspec>
.fi
.if n \{\
.RE
.\}
.sp
.sp
\fBPush:\fR lines are used by \fIgit push\fR and \fBPull:\fR lines are used by \fIgit pull\fR and \fIgit fetch\fR\&. Multiple \fBPush:\fR and \fBPull:\fR lines may be specified for additional branch mappings\&.
.SS "Named file in \fB$GIT_DIR/branches\fR"
.sp
You can choose to provide the name of a file in \fB$GIT_DIR/branches\fR\&. The URL in this file will be used to access the repository\&. This file should have the following format:
.sp
.if n \{\
.RS 4
.\}
.nf
        <URL>#<head>
.fi
.if n \{\
.RE
.\}
.sp
.sp
\fB<URL>\fR is required; \fB#<head>\fR is optional\&.
.sp
Depending on the operation, git will use one of the following refspecs, if you don\(cqt provide one on the command line\&. \fB<branch>\fR is the name of this file in \fB$GIT_DIR/branches\fR and \fB<head>\fR defaults to \fBmaster\fR\&.
.sp
git fetch uses:
.sp
.if n \{\
.RS 4
.\}
.nf
        refs/heads/<head>:refs/heads/<branch>
.fi
.if n \{\
.RE
.\}
.sp
.sp
git push uses:
.sp
.if n \{\
.RS 4
.\}
.nf
        HEAD:refs/heads/<head>
.fi
.if n \{\
.RE
.\}
.sp
.SH "OUTPUT"
.sp
The output of "git push" depends on the transport method used; this section describes the output when pushing over the Git protocol (either locally or via ssh)\&.
.sp
The status of the push is output in tabular form, with each line representing the status of a single ref\&. Each line is of the form:
.sp
.if n \{\
.RS 4
.\}
.nf
 <flag> <summary> <from> \-> <to> (<reason>)
.fi
.if n \{\
.RE
.\}
.sp
.sp
If \-\-porcelain is used, then each line of the output is of the form:
.sp
.if n \{\
.RS 4
.\}
.nf
 <flag> \et <from>:<to> \et <summary> (<reason>)
.fi
.if n \{\
.RE
.\}
.sp
.sp
The status of up\-to\-date refs is shown only if \-\-porcelain or \-\-verbose option is used\&.
.PP
flag
.RS 4
A single character indicating the status of the ref:
.PP
(space)
.RS 4
for a successfully pushed fast\-forward;
.RE
.PP
\fB+\fR
.RS 4
for a successful forced update;
.RE
.PP
\fB\-\fR
.RS 4
for a successfully deleted ref;
.RE
.PP
\fB*\fR
.RS 4
for a successfully pushed new ref;
.RE
.PP
\fB!\fR
.RS 4
for a ref that was rejected or failed to push; and
.RE
.PP
\fB=\fR
.RS 4
for a ref that was up to date and did not need pushing\&.
.RE
.RE
.PP
summary
.RS 4
For a successfully pushed ref, the summary shows the old and new values of the ref in a form suitable for using as an argument to
\fBgit log\fR
(this is
\fB<old>\&.\&.<new>\fR
in most cases, and
\fB<old>\&.\&.\&.<new>\fR
for forced non\-fast\-forward updates)\&.
.sp
For a failed update, more details are given:
.PP
rejected
.RS 4
Git did not try to send the ref at all, typically because it is not a fast\-forward and you did not force the update\&.
.RE
.PP
remote rejected
.RS 4
The remote end refused the update\&. Usually caused by a hook on the remote side, or because the remote repository has one of the following safety options in effect:
\fBreceive\&.denyCurrentBranch\fR
(for pushes to the checked out branch),
\fBreceive\&.denyNonFastForwards\fR
(for forced non\-fast\-forward updates),
\fBreceive\&.denyDeletes\fR
or
\fBreceive\&.denyDeleteCurrent\fR\&. See
\fBgit-config\fR(1)\&.
.RE
.PP
remote failure
.RS 4
The remote end did not report the successful update of the ref, perhaps because of a temporary error on the remote side, a break in the network connection, or other transient error\&.
.RE
.RE
.PP
from
.RS 4
The name of the local ref being pushed, minus its
\fBrefs/<type>/\fR
prefix\&. In the case of deletion, the name of the local ref is omitted\&.
.RE
.PP
to
.RS 4
The name of the remote ref being updated, minus its
\fBrefs/<type>/\fR
prefix\&.
.RE
.PP
reason
.RS 4
A human\-readable explanation\&. In the case of successfully pushed refs, no explanation is needed\&. For a failed ref, the reason for failure is described\&.
.RE
.SH "NOTE ABOUT FAST\-FORWARDS"
.sp
When an update changes a branch (or more in general, a ref) that used to point at commit A to point at another commit B, it is called a fast\-forward update if and only if B is a descendant of A\&.
.sp
In a fast\-forward update from A to B, the set of commits that the original commit A built on top of is a subset of the commits the new commit B builds on top of\&. Hence, it does not lose any history\&.
.sp
In contrast, a non\-fast\-forward update will lose history\&. For example, suppose you and somebody else started at the same commit X, and you built a history leading to commit B while the other person built a history leading to commit A\&. The history looks like this:
.sp
.if n \{\
.RS 4
.\}
.nf
      B
     /
 \-\-\-X\-\-\-A
.fi
.if n \{\
.RE
.\}
.sp
.sp
Further suppose that the other person already pushed changes leading to A back to the original repository from which you two obtained the original commit X\&.
.sp
The push done by the other person updated the branch that used to point at commit X to point at commit A\&. It is a fast\-forward\&.
.sp
But if you try to push, you will attempt to update the branch (that now points at A) with commit B\&. This does \fInot\fR fast\-forward\&. If you did so, the changes introduced by commit A will be lost, because everybody will now start building on top of B\&.
.sp
The command by default does not allow an update that is not a fast\-forward to prevent such loss of history\&.
.sp
If you do not want to lose your work (history from X to B) or the work by the other person (history from X to A), you would need to first fetch the history from the repository, create a history that contains changes done by both parties, and push the result back\&.
.sp
You can perform "git pull", resolve potential conflicts, and "git push" the result\&. A "git pull" will create a merge commit C between commits A and B\&.
.sp
.if n \{\
.RS 4
.\}
.nf
      B\-\-\-C
     /   /
 \-\-\-X\-\-\-A
.fi
.if n \{\
.RE
.\}
.sp
.sp
Updating A with the resulting merge commit will fast\-forward and your push will be accepted\&.
.sp
Alternatively, you can rebase your change between X and B on top of A, with "git pull \-\-rebase", and push the result back\&. The rebase will create a new commit D that builds the change between X and B on top of A\&.
.sp
.if n \{\
.RS 4
.\}
.nf
      B   D
     /   /
 \-\-\-X\-\-\-A
.fi
.if n \{\
.RE
.\}
.sp
.sp
Again, updating A with this commit will fast\-forward and your push will be accepted\&.
.sp
There is another common situation where you may encounter non\-fast\-forward rejection when you try to push, and it is possible even when you are pushing into a repository nobody else pushes into\&. After you push commit A yourself (in the first picture in this section), replace it with "git commit \-\-amend" to produce commit B, and you try to push it out, because forgot that you have pushed A out already\&. In such a case, and only if you are certain that nobody in the meantime fetched your earlier commit A (and started building on top of it), you can run "git push \-\-force" to overwrite it\&. In other words, "git push \-\-force" is a method reserved for a case where you do mean to lose history\&.
.SH "EXAMPLES"
.PP
\fBgit push\fR
.RS 4
Works like
\fBgit push <remote>\fR, where <remote> is the current branch\(cqs remote (or
\fBorigin\fR, if no remote is configured for the current branch)\&.
.RE
.PP
\fBgit push origin\fR
.RS 4
Without additional configuration, pushes the current branch to the configured upstream (\fBbranch\&.<name>\&.merge\fR
configuration variable) if it has the same name as the current branch, and errors out without pushing otherwise\&.
.sp
The default behavior of this command when no <refspec> is given can be configured by setting the
\fBpush\fR
option of the remote, or the
\fBpush\&.default\fR
configuration variable\&.
.sp
For example, to default to pushing only the current branch to
\fBorigin\fR
use
\fBgit config remote\&.origin\&.push HEAD\fR\&. Any valid <refspec> (like the ones in the examples below) can be configured as the default for
\fBgit push origin\fR\&.
.RE
.PP
\fBgit push origin :\fR
.RS 4
Push "matching" branches to
\fBorigin\fR\&. See <refspec> in the
OPTIONS
section above for a description of "matching" branches\&.
.RE
.PP
\fBgit push origin master\fR
.RS 4
Find a ref that matches
\fBmaster\fR
in the source repository (most likely, it would find
\fBrefs/heads/master\fR), and update the same ref (e\&.g\&.
\fBrefs/heads/master\fR) in
\fBorigin\fR
repository with it\&. If
\fBmaster\fR
did not exist remotely, it would be created\&.
.RE
.PP
\fBgit push origin HEAD\fR
.RS 4
A handy way to push the current branch to the same name on the remote\&.
.RE
.PP
\fBgit push mothership master:satellite/master dev:satellite/dev\fR
.RS 4
Use the source ref that matches
\fBmaster\fR
(e\&.g\&.
\fBrefs/heads/master\fR) to update the ref that matches
\fBsatellite/master\fR
(most probably
\fBrefs/remotes/satellite/master\fR) in the
\fBmothership\fR
repository; do the same for
\fBdev\fR
and
\fBsatellite/dev\fR\&.
.sp
See the section describing
\fB<refspec>\&.\&.\&.\fR
above for a discussion of the matching semantics\&.
.sp
This is to emulate
\fBgit fetch\fR
run on the
\fBmothership\fR
using
\fBgit push\fR
that is run in the opposite direction in order to integrate the work done on
\fBsatellite\fR, and is often necessary when you can only make connection in one way (i\&.e\&. satellite can ssh into mothership but mothership cannot initiate connection to satellite because the latter is behind a firewall or does not run sshd)\&.
.sp
After running this
\fBgit push\fR
on the
\fBsatellite\fR
machine, you would ssh into the
\fBmothership\fR
and run
\fBgit merge\fR
there to complete the emulation of
\fBgit pull\fR
that were run on
\fBmothership\fR
to pull changes made on
\fBsatellite\fR\&.
.RE
.PP
\fBgit push origin HEAD:master\fR
.RS 4
Push the current branch to the remote ref matching
\fBmaster\fR
in the
\fBorigin\fR
repository\&. This form is convenient to push the current branch without thinking about its local name\&.
.RE
.PP
\fBgit push origin master:refs/heads/experimental\fR
.RS 4
Create the branch
\fBexperimental\fR
in the
\fBorigin\fR
repository by copying the current
\fBmaster\fR
branch\&. This form is only needed to create a new branch or tag in the remote repository when the local name and the remote name are different; otherwise, the ref name on its own will work\&.
.RE
.PP
\fBgit push origin :experimental\fR
.RS 4
Find a ref that matches
\fBexperimental\fR
in the
\fBorigin\fR
repository (e\&.g\&.
\fBrefs/heads/experimental\fR), and delete it\&.
.RE
.PP
\fBgit push origin +dev:master\fR
.RS 4
Update the origin repository\(cqs master branch with the dev branch, allowing non\-fast\-forward updates\&.
\fBThis can leave unreferenced commits dangling in the origin repository\&.\fR
Consider the following situation, where a fast\-forward is not possible:
.sp
.if n \{\
.RS 4
.\}
.nf
            o\-\-\-o\-\-\-o\-\-\-A\-\-\-B  origin/master
                     \e
                      X\-\-\-Y\-\-\-Z  dev
.fi
.if n \{\
.RE
.\}
.sp
The above command would change the origin repository to
.sp
.if n \{\
.RS 4
.\}
.nf
                      A\-\-\-B  (unnamed branch)
                     /
            o\-\-\-o\-\-\-o\-\-\-X\-\-\-Y\-\-\-Z  master
.fi
.if n \{\
.RE
.\}
.sp
Commits A and B would no longer belong to a branch with a symbolic name, and so would be unreachable\&. As such, these commits would be removed by a
\fBgit gc\fR
command on the origin repository\&.
.RE
.SH "SECURITY"
.sp
The fetch and push protocols are not designed to prevent one side from stealing data from the other repository that was not intended to be shared\&. If you have private data that you need to protect from a malicious peer, your best option is to store it in another repository\&. This applies to both clients and servers\&. In particular, namespaces on a server are not effective for read access control; you should only grant read access to a namespace to clients that you would trust with read access to the entire repository\&.
.sp
The known attack vectors are as follows:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
The victim sends "have" lines advertising the IDs of objects it has that are not explicitly intended to be shared but can be used to optimize the transfer if the peer also has them\&. The attacker chooses an object ID X to steal and sends a ref to X, but isn\(cqt required to send the content of X because the victim already has it\&. Now the victim believes that the attacker has X, and it sends the content of X back to the attacker later\&. (This attack is most straightforward for a client to perform on a server, by creating a ref to X in the namespace the client has access to and then fetching it\&. The most likely way for a server to perform it on a client is to "merge" X into a public branch and hope that the user does additional work on this branch and pushes it back to the server without noticing the merge\&.)
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
As in #1, the attacker chooses an object ID X to steal\&. The victim sends an object Y that the attacker already has, and the attacker falsely claims to have X and not Y, so the victim sends Y as a delta against X\&. The delta reveals regions of X that are similar to Y to the attacker\&.
.RE
.SH "CONFIGURATION"
.sp
Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
.PP
push\&.autoSetupRemote
.RS 4
If set to "true" assume
\fB\-\-set\-upstream\fR
on default push when no upstream tracking exists for the current branch; this option takes effect with push\&.default options
\fIsimple\fR,
\fIupstream\fR, and
\fIcurrent\fR\&. It is useful if by default you want new branches to be pushed to the default remote (like the behavior of
\fIpush\&.default=current\fR) and you also want the upstream tracking to be set\&. Workflows most likely to benefit from this option are
\fIsimple\fR
central workflows where all branches are expected to have the same name on the remote\&.
.RE
.PP
push\&.default
.RS 4
Defines the action
\fBgit push\fR
should take if no refspec is given (whether from the command\-line, config, or elsewhere)\&. Different values are well\-suited for specific workflows; for instance, in a purely central workflow (i\&.e\&. the fetch source is equal to the push destination),
\fBupstream\fR
is probably what you want\&. Possible values are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBnothing\fR
\- do not push anything (error out) unless a refspec is given\&. This is primarily meant for people who want to avoid mistakes by always being explicit\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBcurrent\fR
\- push the current branch to update a branch with the same name on the receiving end\&. Works in both central and non\-central workflows\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBupstream\fR
\- push the current branch back to the branch whose changes are usually integrated into the current branch (which is called
\fB@{upstream}\fR)\&. This mode only makes sense if you are pushing to the same repository you would normally pull from (i\&.e\&. central workflow)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBtracking\fR
\- This is a deprecated synonym for
\fBupstream\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBsimple\fR
\- push the current branch with the same name on the remote\&.
.sp
If you are working on a centralized workflow (pushing to the same repository you pull from, which is typically
\fBorigin\fR), then you need to configure an upstream branch with the same name\&.
.sp
This mode is the default since Git 2\&.0, and is the safest option suited for beginners\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\fBmatching\fR
\- push all branches having the same name on both ends\&. This makes the repository you are pushing to remember the set of branches that will be pushed out (e\&.g\&. if you always push
\fImaint\fR
and
\fImaster\fR
there and no other branches, the repository you push to will have these two branches, and your local
\fImaint\fR
and
\fImaster\fR
will be pushed there)\&.
.sp
To use this mode effectively, you have to make sure
\fIall\fR
the branches you would push out are ready to be pushed out before running
\fIgit push\fR, as the whole point of this mode is to allow you to push all of the branches in one go\&. If you usually finish work on only one branch and push out the result, while other branches are unfinished, this mode is not for you\&. Also this mode is not suitable for pushing into a shared central repository, as other people may add new branches there, or update the tip of existing branches outside your control\&.
.sp
This used to be the default, but not since Git 2\&.0 (\fBsimple\fR
is the new default)\&.
.RE
.RE
.PP
push\&.followTags
.RS 4
If set to true, enable
\fB\-\-follow\-tags\fR
option by default\&. You may override this configuration at time of push by specifying
\fB\-\-no\-follow\-tags\fR\&.
.RE
.PP
push\&.gpgSign
.RS 4
May be set to a boolean value, or the string
\fIif\-asked\fR\&. A true value causes all pushes to be GPG signed, as if
\fB\-\-signed\fR
is passed to
\fBgit-push\fR(1)\&. The string
\fIif\-asked\fR
causes pushes to be signed if the server supports it, as if
\fB\-\-signed=if\-asked\fR
is passed to
\fIgit push\fR\&. A false value may override a value from a lower\-priority config file\&. An explicit command\-line flag always overrides this config option\&.
.RE
.PP
push\&.pushOption
.RS 4
When no
\fB\-\-push\-option=<option>\fR
argument is given from the command line,
\fBgit push\fR
behaves as if each <value> of this variable is given as
\fB\-\-push\-option=<value>\fR\&.
.sp
This is a multi\-valued variable, and an empty value can be used in a higher priority configuration file (e\&.g\&.
\fB\&.git/config\fR
in a repository) to clear the values inherited from a lower priority configuration files (e\&.g\&.
\fB$HOME/\&.gitconfig\fR)\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Example:

/etc/gitconfig
  push\&.pushoption = a
  push\&.pushoption = b

~/\&.gitconfig
  push\&.pushoption = c

repo/\&.git/config
  push\&.pushoption =
  push\&.pushoption = b

This will result in only b (a and c are cleared)\&.
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
push\&.recurseSubmodules
.RS 4
May be "check", "on\-demand", "only", or "no", with the same behavior as that of "push \-\-recurse\-submodules"\&. If not set,
\fIno\fR
is used by default, unless
\fIsubmodule\&.recurse\fR
is set (in which case a
\fItrue\fR
value means
\fIon\-demand\fR)\&.
.RE
.PP
push\&.useForceIfIncludes
.RS 4
If set to "true", it is equivalent to specifying
\fB\-\-force\-if\-includes\fR
as an option to
\fBgit-push\fR(1)
in the command line\&. Adding
\fB\-\-no\-force\-if\-includes\fR
at the time of push overrides this configuration setting\&.
.RE
.PP
push\&.negotiate
.RS 4
If set to "true", attempt to reduce the size of the packfile sent by rounds of negotiation in which the client and the server attempt to find commits in common\&. If "false", Git will rely solely on the server\(cqs ref advertisement to find commits in common\&.
.RE
.PP
push\&.useBitmaps
.RS 4
If set to "false", disable use of bitmaps for "git push" even if
\fBpack\&.useBitmaps\fR
is "true", without preventing other git operations from using bitmaps\&. Default is true\&.
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
