<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.9" />
<title>git-push(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
git-push(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-push -
   Update remote refs along with associated objects
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git push</em> [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=&lt;git-receive-pack&gt;]
           [--repo=&lt;repository&gt;] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
           [-u | --set-upstream] [--push-option=&lt;string&gt;]
           [--[no-]signed|--sign=(true|false|if-asked)]
           [--force-with-lease[=&lt;refname&gt;[:&lt;expect&gt;]]]
           [--no-verify] [&lt;repository&gt; [&lt;refspec&gt;&#8230;]]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Updates remote refs using local refs, while sending objects
necessary to complete the given refs.</p></div>
<div class="paragraph"><p>You can make interesting things happen to a repository
every time you push into it, by setting up <em>hooks</em> there.  See
documentation for <a href="git-receive-pack.html">git-receive-pack(1)</a>.</p></div>
<div class="paragraph"><p>When the command line does not specify where to push with the
<code>&lt;repository&gt;</code> argument, <code>branch.*.remote</code> configuration for the
current branch is consulted to determine where to push.  If the
configuration is missing, it defaults to <em>origin</em>.</p></div>
<div class="paragraph"><p>When the command line does not specify what to push with <code>&lt;refspec&gt;...</code>
arguments or <code>--all</code>, <code>--mirror</code>, <code>--tags</code> options, the command finds
the default <code>&lt;refspec&gt;</code> by consulting <code>remote.*.push</code> configuration,
and if it is not found, honors <code>push.default</code> configuration to decide
what to push (See <a href="git-config.html">git-config(1)</a> for the meaning of <code>push.default</code>).</p></div>
<div class="paragraph"><p>When neither the command-line nor the configuration specify what to
push, the default behavior is used, which corresponds to the <code>simple</code>
value for <code>push.default</code>: 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.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options_a_id_options_a">OPTIONS<a id="OPTIONS"></a></h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
&lt;repository&gt;
</dt>
<dd>
<p>
        The "remote" repository that is destination of a push
        operation.  This parameter can be either a URL
        (see the section <a href="#URLS">GIT URLS</a> below) or the name
        of a remote (see the section <a href="#REMOTES">REMOTES</a> below).
</p>
</dd>
<dt class="hdlist1">
&lt;refspec&gt;&#8230;
</dt>
<dd>
<p>
        Specify what destination ref to update with what source object.
        The format of a &lt;refspec&gt; parameter is an optional plus
        <code>+</code>, followed by the source object &lt;src&gt;, followed
        by a colon <code>:</code>, followed by the destination ref &lt;dst&gt;.
</p>
<div class="paragraph"><p>The &lt;src&gt; is often the name of the branch you would want to push, but
it can be any arbitrary "SHA-1 expression", such as <code>master~4</code> or
<code>HEAD</code> (see <a href="gitrevisions.html">gitrevisions(7)</a>).</p></div>
<div class="paragraph"><p>The &lt;dst&gt; 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 <code>git push [&lt;repository&gt;]</code> without any <code>&lt;refspec&gt;</code> argument is set to
update some ref at the destination with <code>&lt;src&gt;</code> with
<code>remote.&lt;repository&gt;.push</code> configuration variable, <code>:&lt;dst&gt;</code> part can
be omitted&#8212;such a push will update a ref that <code>&lt;src&gt;</code> normally updates
without any <code>&lt;refspec&gt;</code> on the command line.  Otherwise, missing
<code>:&lt;dst&gt;</code> means to update the same ref as the <code>&lt;src&gt;</code>.</p></div>
<div class="paragraph"><p>The object referenced by &lt;src&gt; is used to update the &lt;dst&gt; reference
on the remote side.  By default this is only allowed if &lt;dst&gt; is not
a tag (annotated or lightweight), and then only if it can fast-forward
&lt;dst&gt;.  By having the optional leading <code>+</code>, you can tell Git to update
the &lt;dst&gt; ref even if it is not allowed by default (e.g., it is not a
fast-forward.)  This does <strong>not</strong> attempt to merge &lt;src&gt; into &lt;dst&gt;.  See
EXAMPLES below for details.</p></div>
<div class="paragraph"><p><code>tag &lt;tag&gt;</code> means the same as <code>refs/tags/&lt;tag&gt;:refs/tags/&lt;tag&gt;</code>.</p></div>
<div class="paragraph"><p>Pushing an empty &lt;src&gt; allows you to delete the &lt;dst&gt; ref from
the remote repository.</p></div>
<div class="paragraph"><p>The special refspec <code>:</code> (or <code>+:</code> 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.</p></div>
</dd>
<dt class="hdlist1">
--all
</dt>
<dd>
<p>
        Push all branches (i.e. refs under <code>refs/heads/</code>); cannot be
        used with other &lt;refspec&gt;.
</p>
</dd>
<dt class="hdlist1">
--prune
</dt>
<dd>
<p>
        Remove remote branches that don&#8217;t have a local counterpart. For example
        a remote branch <code>tmp</code> will be removed if a local branch with the same
        name doesn&#8217;t exist any more. This also respects refspecs, e.g.
        <code>git push --prune remote refs/heads/*:refs/tmp/*</code> would
        make sure that remote <code>refs/tmp/foo</code> will be removed if <code>refs/heads/foo</code>
        doesn&#8217;t exist.
</p>
</dd>
<dt class="hdlist1">
--mirror
</dt>
<dd>
<p>
        Instead of naming each ref to push, specifies that all
        refs under <code>refs/</code> (which includes but is not
        limited to <code>refs/heads/</code>, <code>refs/remotes/</code>, and <code>refs/tags/</code>)
        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 <code>remote.&lt;remote&gt;.mirror</code> is
        set.
</p>
</dd>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Do everything except actually send the updates.
</p>
</dd>
<dt class="hdlist1">
--porcelain
</dt>
<dd>
<p>
        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.
</p>
</dd>
<dt class="hdlist1">
--delete
</dt>
<dd>
<p>
        All listed refs are deleted from the remote repository. This is
        the same as prefixing all refs with a colon.
</p>
</dd>
<dt class="hdlist1">
--tags
</dt>
<dd>
<p>
        All refs under <code>refs/tags</code> are pushed, in
        addition to refspecs explicitly listed on the command
        line.
</p>
</dd>
<dt class="hdlist1">
--follow-tags
</dt>
<dd>
<p>
        Push all the refs that would be pushed without this option,
        and also push annotated tags in <code>refs/tags</code> 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 <code>push.followTags</code>.  For more
        information, see <code>push.followTags</code> in <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
--[no-]signed
</dt>
<dt class="hdlist1">
--sign=(true|false|if-asked)
</dt>
<dd>
<p>
        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 <code>false</code> or <code>--no-signed</code>, no signing will be
        attempted.  If <code>true</code> or <code>--signed</code>, the push will fail if the
        server does not support signed pushes.  If set to <code>if-asked</code>,
        sign if and only if the server supports signed pushes.  The push
        will also fail if the actual call to <code>gpg --sign</code> fails.  See
        <a href="git-receive-pack.html">git-receive-pack(1)</a> for the details on the receiving end.
</p>
</dd>
<dt class="hdlist1">
--[no-]atomic
</dt>
<dd>
<p>
        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.
</p>
</dd>
<dt class="hdlist1">
-o
</dt>
<dt class="hdlist1">
--push-option
</dt>
<dd>
<p>
        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.
</p>
</dd>
<dt class="hdlist1">
--receive-pack=&lt;git-receive-pack&gt;
</dt>
<dt class="hdlist1">
--exec=&lt;git-receive-pack&gt;
</dt>
<dd>
<p>
        Path to the <em>git-receive-pack</em> 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.
</p>
</dd>
<dt class="hdlist1">
--[no-]force-with-lease
</dt>
<dt class="hdlist1">
--force-with-lease=&lt;refname&gt;
</dt>
<dt class="hdlist1">
--force-with-lease=&lt;refname&gt;:&lt;expect&gt;
</dt>
<dd>
<p>
        Usually, "git push" refuses to update a remote ref that is
        not an ancestor of the local ref used to overwrite it.
</p>
<div class="paragraph"><p>This option overrides this restriction if the current value of the
remote ref is the expected value.  "git push" fails otherwise.</p></div>
<div class="paragraph"><p>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 her
commit, and blindly pushing with <code>--force</code> will lose her work.</p></div>
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p><code>--force-with-lease</code> 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.</p></div>
<div class="paragraph"><p><code>--force-with-lease=&lt;refname&gt;</code>, 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.</p></div>
<div class="paragraph"><p><code>--force-with-lease=&lt;refname&gt;:&lt;expect&gt;</code> 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 <code>&lt;expect&gt;</code> (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 <code>&lt;expect&gt;</code> is the empty string, then the named ref
must not already exist.</p></div>
<div class="paragraph"><p>Note that all forms other than <code>--force-with-lease=&lt;refname&gt;:&lt;expect&gt;</code>
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.</p></div>
<div class="paragraph"><p>"--no-force-with-lease" will cancel all the previous --force-with-lease on the
command line.</p></div>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        Usually, the command refuses to update a remote ref that is
        not an ancestor of the local ref used to overwrite it.
        Also, when <code>--force-with-lease</code> option is used, the command refuses
        to update a remote ref whose current value does not match
        what is expected.
</p>
<div class="paragraph"><p>This flag disables these checks, and can cause the remote repository
to lose commits; use it with care.</p></div>
<div class="paragraph"><p>Note that <code>--force</code> applies to all the refs that are pushed, hence
using it with <code>push.default</code> set to <code>matching</code> or with multiple push
destinations configured with <code>remote.*.push</code> 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 <code>+</code> in front of the refspec to push (e.g <code>git push
origin +master</code> to force a push to the <code>master</code> branch). See the
<code>&lt;refspec&gt;...</code> section above for details.</p></div>
</dd>
<dt class="hdlist1">
--repo=&lt;repository&gt;
</dt>
<dd>
<p>
        This option is equivalent to the &lt;repository&gt; argument. If both
        are specified, the command-line argument takes precedence.
</p>
</dd>
<dt class="hdlist1">
-u
</dt>
<dt class="hdlist1">
--set-upstream
</dt>
<dd>
<p>
        For every branch that is up to date or successfully pushed, add
        upstream (tracking) reference, used by argument-less
        <a href="git-pull.html">git-pull(1)</a> and other commands. For more information,
        see <code>branch.&lt;name&gt;.merge</code> in <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
--[no-]thin
</dt>
<dd>
<p>
        These options are passed to <a href="git-send-pack.html">git-send-pack(1)</a>. 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
        --thin.
</p>
</dd>
<dt class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Suppress all output, including the listing of updated refs,
        unless an error occurs. Progress is not reported to the standard
        error stream.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Run verbosely.
</p>
</dd>
<dt class="hdlist1">
--progress
</dt>
<dd>
<p>
        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.
</p>
</dd>
<dt class="hdlist1">
--no-recurse-submodules
</dt>
<dt class="hdlist1">
--recurse-submodules=check|on-demand|no
</dt>
<dd>
<p>
        May be used to make sure all submodule commits used by the
        revisions to be pushed are available on a remote-tracking branch.
        If <em>check</em> 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 <em>on-demand</em> 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. A value of
        <em>no</em> or using <code>--no-recurse-submodules</code> can be used to override the
        push.recurseSubmodules configuration variable when no submodule
        recursion is required.
</p>
</dd>
<dt class="hdlist1">
--[no-]verify
</dt>
<dd>
<p>
        Toggle the pre-push hook (see <a href="githooks.html">githooks(5)</a>).  The
        default is --verify, giving the hook a chance to prevent the
        push.  With --no-verify, the hook is bypassed completely.
</p>
</dd>
<dt class="hdlist1">
-4
</dt>
<dt class="hdlist1">
--ipv4
</dt>
<dd>
<p>
        Use IPv4 addresses only, ignoring IPv6 addresses.
</p>
</dd>
<dt class="hdlist1">
-6
</dt>
<dt class="hdlist1">
--ipv6
</dt>
<dd>
<p>
        Use IPv6 addresses only, ignoring IPv4 addresses.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_git_urls_a_id_urls_a">GIT URLS<a id="URLS"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>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 it).</p></div>
<div class="paragraph"><p>The native transport (i.e. git:// URL) does no authentication and
should be used with caution on unsecured networks.</p></div>
<div class="paragraph"><p>The following syntaxes may be used with them:</p></div>
<div class="ulist"><ul>
<li>
<p>
ssh://&#91;user@&#93;host.xz&#91;:port&#93;/path/to/repo.git/
</p>
</li>
<li>
<p>
git://host.xz&#91;:port&#93;/path/to/repo.git/
</p>
</li>
<li>
<p>
http&#91;s&#93;://host.xz&#91;:port&#93;/path/to/repo.git/
</p>
</li>
<li>
<p>
ftp&#91;s&#93;://host.xz&#91;:port&#93;/path/to/repo.git/
</p>
</li>
</ul></div>
<div class="paragraph"><p>An alternative scp-like syntax may also be used with the ssh protocol:</p></div>
<div class="ulist"><ul>
<li>
<p>
&#91;user@&#93;host.xz:path/to/repo.git/
</p>
</li>
</ul></div>
<div class="paragraph"><p>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 <code>foo:bar</code> could be specified as an
absolute path or <code>./foo:bar</code> to avoid being misinterpreted as an ssh
url.</p></div>
<div class="paragraph"><p>The ssh and git protocols additionally support ~username expansion:</p></div>
<div class="ulist"><ul>
<li>
<p>
ssh://&#91;user@&#93;host.xz&#91;:port&#93;/~&#91;user&#93;/path/to/repo.git/
</p>
</li>
<li>
<p>
git://host.xz&#91;:port&#93;/~&#91;user&#93;/path/to/repo.git/
</p>
</li>
<li>
<p>
&#91;user@&#93;host.xz:/~&#91;user&#93;/path/to/repo.git/
</p>
</li>
</ul></div>
<div class="paragraph"><p>For local repositories, also supported by Git natively, the following
syntaxes may be used:</p></div>
<div class="ulist"><ul>
<li>
<p>
/path/to/repo.git/
</p>
</li>
<li>
<p>
file:///path/to/repo.git/
</p>
</li>
</ul></div>
<div class="paragraph"><p>These two syntaxes are mostly equivalent, except when cloning, when
the former implies --local option. See <a href="git-clone.html">git-clone(1)</a> for
details.</p></div>
<div class="paragraph"><p>When Git doesn&#8217;t know how to handle a certain transport protocol, it
attempts to use the <em>remote-&lt;transport&gt;</em> remote helper, if one
exists. To explicitly request a remote helper, the following syntax
may be used:</p></div>
<div class="ulist"><ul>
<li>
<p>
&lt;transport&gt;::&lt;address&gt;
</p>
</li>
</ul></div>
<div class="paragraph"><p>where &lt;address&gt; may be a path, a server and path, or an arbitrary
URL-like string recognized by the specific remote helper being
invoked. See <a href="gitremote-helpers.html">gitremote-helpers(1)</a> for details.</p></div>
<div class="paragraph"><p>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:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        [url "&lt;actual url base&gt;"]
                insteadOf = &lt;other url base&gt;</code></pre>
</div></div>
<div class="paragraph"><p>For example, with this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        [url "git://git.host.xz/"]
                insteadOf = host.xz:/path/to/
                insteadOf = work:</code></pre>
</div></div>
<div class="paragraph"><p>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".</p></div>
<div class="paragraph"><p>If you want to rewrite URLs for push only, you can create a
configuration section of the form:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        [url "&lt;actual url base&gt;"]
                pushInsteadOf = &lt;other url base&gt;</code></pre>
</div></div>
<div class="paragraph"><p>For example, with this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        [url "ssh://example.org/"]
                pushInsteadOf = git://example.org/</code></pre>
</div></div>
<div class="paragraph"><p>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.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_remotes_a_id_remotes_a">REMOTES<a id="REMOTES"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>The name of one of the following can be used instead
of a URL as <code>&lt;repository&gt;</code> argument:</p></div>
<div class="ulist"><ul>
<li>
<p>
a remote in the Git configuration file: <code>$GIT_DIR/config</code>,
</p>
</li>
<li>
<p>
a file in the <code>$GIT_DIR/remotes</code> directory, or
</p>
</li>
<li>
<p>
a file in the <code>$GIT_DIR/branches</code> directory.
</p>
</li>
</ul></div>
<div class="paragraph"><p>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.</p></div>
<div class="sect2">
<h3 id="_named_remote_in_configuration_file">Named remote in configuration file</h3>
<div class="paragraph"><p>You can choose to provide the name of a remote which you had previously
configured using <a href="git-remote.html">git-remote(1)</a>, <a href="git-config.html">git-config(1)</a>
or even by a manual edit to the <code>$GIT_DIR/config</code> 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:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        [remote "&lt;name&gt;"]
                url = &lt;url&gt;
                pushurl = &lt;pushurl&gt;
                push = &lt;refspec&gt;
                fetch = &lt;refspec&gt;</code></pre>
</div></div>
<div class="paragraph"><p>The <code>&lt;pushurl&gt;</code> is used for pushes only. It is optional and defaults
to <code>&lt;url&gt;</code>.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_code_git_dir_remotes_code">Named file in <code>$GIT_DIR/remotes</code></h3>
<div class="paragraph"><p>You can choose to provide the name of a
file in <code>$GIT_DIR/remotes</code>.  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:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        URL: one of the above URL format
        Push: &lt;refspec&gt;
        Pull: &lt;refspec&gt;</code></pre>
</div></div>
<div class="paragraph"><p><code>Push:</code> lines are used by <em>git push</em> and
<code>Pull:</code> lines are used by <em>git pull</em> and <em>git fetch</em>.
Multiple <code>Push:</code> and <code>Pull:</code> lines may
be specified for additional branch mappings.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_code_git_dir_branches_code">Named file in <code>$GIT_DIR/branches</code></h3>
<div class="paragraph"><p>You can choose to provide the name of a
file in <code>$GIT_DIR/branches</code>.
The URL in this file will be used to access the repository.
This file should have the following format:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        &lt;url&gt;#&lt;head&gt;</code></pre>
</div></div>
<div class="paragraph"><p><code>&lt;url&gt;</code> is required; <code>#&lt;head&gt;</code> is optional.</p></div>
<div class="paragraph"><p>Depending on the operation, git will use one of the following
refspecs, if you don&#8217;t provide one on the command line.
<code>&lt;branch&gt;</code> is the name of this file in <code>$GIT_DIR/branches</code> and
<code>&lt;head&gt;</code> defaults to <code>master</code>.</p></div>
<div class="paragraph"><p>git fetch uses:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        refs/heads/&lt;head&gt;:refs/heads/&lt;branch&gt;</code></pre>
</div></div>
<div class="paragraph"><p>git push uses:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        HEAD:refs/heads/&lt;head&gt;</code></pre>
</div></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_output">OUTPUT</h2>
<div class="sectionbody">
<div class="paragraph"><p>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).</p></div>
<div class="paragraph"><p>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:</p></div>
<div class="listingblock">
<div class="content">
<pre><code> &lt;flag&gt; &lt;summary&gt; &lt;from&gt; -&gt; &lt;to&gt; (&lt;reason&gt;)</code></pre>
</div></div>
<div class="paragraph"><p>If --porcelain is used, then each line of the output is of the form:</p></div>
<div class="listingblock">
<div class="content">
<pre><code> &lt;flag&gt; \t &lt;from&gt;:&lt;to&gt; \t &lt;summary&gt; (&lt;reason&gt;)</code></pre>
</div></div>
<div class="paragraph"><p>The status of up-to-date refs is shown only if --porcelain or --verbose
option is used.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
flag
</dt>
<dd>
<p>
        A single character indicating the status of the ref:
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
(space)
</dt>
<dd>
<p>
for a successfully pushed fast-forward;
</p>
</dd>
<dt class="hdlist1">
<code>+</code>
</dt>
<dd>
<p>
for a successful forced update;
</p>
</dd>
<dt class="hdlist1">
<code>-</code>
</dt>
<dd>
<p>
for a successfully deleted ref;
</p>
</dd>
<dt class="hdlist1">
<code>*</code>
</dt>
<dd>
<p>
for a successfully pushed new ref;
</p>
</dd>
<dt class="hdlist1">
<code>!</code>
</dt>
<dd>
<p>
for a ref that was rejected or failed to push; and
</p>
</dd>
<dt class="hdlist1">
<code>=</code>
</dt>
<dd>
<p>
for a ref that was up to date and did not need pushing.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
summary
</dt>
<dd>
<p>
        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
        <code>git log</code> (this is <code>&lt;old&gt;..&lt;new&gt;</code> in most cases, and
        <code>&lt;old&gt;...&lt;new&gt;</code> for forced non-fast-forward updates).
</p>
<div class="paragraph"><p>For a failed update, more details are given:</p></div>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
rejected
</dt>
<dd>
<p>
        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.
</p>
</dd>
<dt class="hdlist1">
remote rejected
</dt>
<dd>
<p>
        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:
        <code>receive.denyCurrentBranch</code> (for pushes to the checked out
        branch), <code>receive.denyNonFastForwards</code> (for forced
        non-fast-forward updates), <code>receive.denyDeletes</code> or
        <code>receive.denyDeleteCurrent</code>.  See <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
remote failure
</dt>
<dd>
<p>
        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.
</p>
</dd>
</dl></div>
</div></div>
</dd>
<dt class="hdlist1">
from
</dt>
<dd>
<p>
        The name of the local ref being pushed, minus its
        <code>refs/&lt;type&gt;/</code> prefix. In the case of deletion, the
        name of the local ref is omitted.
</p>
</dd>
<dt class="hdlist1">
to
</dt>
<dd>
<p>
        The name of the remote ref being updated, minus its
        <code>refs/&lt;type&gt;/</code> prefix.
</p>
</dd>
<dt class="hdlist1">
reason
</dt>
<dd>
<p>
        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.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_note_about_fast_forwards">Note about fast-forwards</h2>
<div class="sectionbody">
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>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:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>      B
     /
 ---X---A</code></pre>
</div></div>
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>But if you try to push, you will attempt to update the branch (that
now points at A) with commit B.  This does <em>not</em> 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.</p></div>
<div class="paragraph"><p>The command by default does not allow an update that is not a fast-forward
to prevent such loss of history.</p></div>
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>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.</p></div>
<div class="listingblock">
<div class="content">
<pre><code>      B---C
     /   /
 ---X---A</code></pre>
</div></div>
<div class="paragraph"><p>Updating A with the resulting merge commit will fast-forward and your
push will be accepted.</p></div>
<div class="paragraph"><p>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.</p></div>
<div class="listingblock">
<div class="content">
<pre><code>      B   D
     /   /
 ---X---A</code></pre>
</div></div>
<div class="paragraph"><p>Again, updating A with this commit will fast-forward and your push will be
accepted.</p></div>
<div class="paragraph"><p>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.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">Examples</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
<code>git push</code>
</dt>
<dd>
<p>
        Works like <code>git push &lt;remote&gt;</code>, where &lt;remote&gt; is the
        current branch&#8217;s remote (or <code>origin</code>, if no remote is
        configured for the current branch).
</p>
</dd>
<dt class="hdlist1">
<code>git push origin</code>
</dt>
<dd>
<p>
        Without additional configuration, pushes the current branch to
        the configured upstream (<code>remote.origin.merge</code> configuration
        variable) if it has the same name as the current branch, and
        errors out without pushing otherwise.
</p>
<div class="paragraph"><p>The default behavior of this command when no &lt;refspec&gt; is given can be
configured by setting the <code>push</code> option of the remote, or the <code>push.default</code>
configuration variable.</p></div>
<div class="paragraph"><p>For example, to default to pushing only the current branch to <code>origin</code>
use <code>git config remote.origin.push HEAD</code>.  Any valid &lt;refspec&gt; (like
the ones in the examples below) can be configured as the default for
<code>git push origin</code>.</p></div>
</dd>
<dt class="hdlist1">
<code>git push origin :</code>
</dt>
<dd>
<p>
        Push "matching" branches to <code>origin</code>. See
        &lt;refspec&gt; in the <a href="#OPTIONS">OPTIONS</a> section above for a
        description of "matching" branches.
</p>
</dd>
<dt class="hdlist1">
<code>git push origin master</code>
</dt>
<dd>
<p>
        Find a ref that matches <code>master</code> in the source repository
        (most likely, it would find <code>refs/heads/master</code>), and update
        the same ref (e.g. <code>refs/heads/master</code>) in <code>origin</code> repository
        with it.  If <code>master</code> did not exist remotely, it would be
        created.
</p>
</dd>
<dt class="hdlist1">
<code>git push origin HEAD</code>
</dt>
<dd>
<p>
        A handy way to push the current branch to the same name on the
        remote.
</p>
</dd>
<dt class="hdlist1">
<code>git push mothership master:satellite/master dev:satellite/dev</code>
</dt>
<dd>
<p>
        Use the source ref that matches <code>master</code> (e.g. <code>refs/heads/master</code>)
        to update the ref that matches <code>satellite/master</code> (most probably
        <code>refs/remotes/satellite/master</code>) in the <code>mothership</code> repository;
        do the same for <code>dev</code> and <code>satellite/dev</code>.
</p>
<div class="paragraph"><p>This is to emulate <code>git fetch</code> run on the <code>mothership</code> using <code>git
push</code> that is run in the opposite direction in order to integrate
the work done on <code>satellite</code>, 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).</p></div>
<div class="paragraph"><p>After running this <code>git push</code> on the <code>satellite</code> machine, you would
ssh into the <code>mothership</code> and run <code>git merge</code> there to complete the
emulation of <code>git pull</code> that were run on <code>mothership</code> to pull changes
made on <code>satellite</code>.</p></div>
</dd>
<dt class="hdlist1">
<code>git push origin HEAD:master</code>
</dt>
<dd>
<p>
        Push the current branch to the remote ref matching <code>master</code> in the
        <code>origin</code> repository. This form is convenient to push the current
        branch without thinking about its local name.
</p>
</dd>
<dt class="hdlist1">
<code>git push origin master:refs/heads/experimental</code>
</dt>
<dd>
<p>
        Create the branch <code>experimental</code> in the <code>origin</code> repository
        by copying the current <code>master</code> 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.
</p>
</dd>
<dt class="hdlist1">
<code>git push origin :experimental</code>
</dt>
<dd>
<p>
        Find a ref that matches <code>experimental</code> in the <code>origin</code> repository
        (e.g. <code>refs/heads/experimental</code>), and delete it.
</p>
</dd>
<dt class="hdlist1">
<code>git push origin +dev:master</code>
</dt>
<dd>
<p>
        Update the origin repository&#8217;s master branch with the dev branch,
        allowing non-fast-forward updates.  <strong>This can leave unreferenced
        commits dangling in the origin repository.</strong>  Consider the
        following situation, where a fast-forward is not possible:
</p>
<div class="listingblock">
<div class="content">
<pre><code>            o---o---o---A---B  origin/master
                     \
                      X---Y---Z  dev</code></pre>
</div></div>
<div class="paragraph"><p>The above command would change the origin repository to</p></div>
<div class="listingblock">
<div class="content">
<pre><code>                      A---B  (unnamed branch)
                     /
            o---o---o---X---Y---Z  master</code></pre>
</div></div>
<div class="paragraph"><p>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 <code>git gc</code> command on the origin repository.</p></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2016-08-10 13:26:51 PDT
</div>
</div>
</body>
</html>
