<?xml version="1.0" encoding="UTF-8"?>
<!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.10" />
<title>git-fetch(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-fetch(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-fetch -
   Download objects and refs from another repository
</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 fetch</em> [&lt;options&gt;] [&lt;repository&gt; [&lt;refspec&gt;&#8230;]]
<em>git fetch</em> [&lt;options&gt;] &lt;group&gt;
<em>git fetch</em> --multiple [&lt;options&gt;] [(&lt;repository&gt; | &lt;group&gt;)&#8230;]
<em>git fetch</em> --all [&lt;options&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Fetch branches and/or tags (collectively, "refs") from one or more
other repositories, along with the objects necessary to complete their
histories.  Remote-tracking branches are updated (see the description
of &lt;refspec&gt; below for ways to control this behavior).</p></div>
<div class="paragraph"><p>By default, any tag that points into the histories being fetched is
also fetched; the effect is to fetch tags that
point at branches that you are interested in.  This default behavior
can be changed by using the --tags or --no-tags options or by
configuring remote.&lt;name&gt;.tagOpt.  By using a refspec that fetches tags
explicitly, you can fetch tags that do not point into branches you
are interested in as well.</p></div>
<div class="paragraph"><p><em>git fetch</em> can fetch from either a single named repository or URL,
or from several repositories at once if &lt;group&gt; is given and
there is a remotes.&lt;group&gt; entry in the configuration file.
(See <a href="git-config.html">git-config(1)</a>).</p></div>
<div class="paragraph"><p>When no remote is specified, by default the <code>origin</code> remote will be used,
unless there&#8217;s an upstream branch configured for the current branch.</p></div>
<div class="paragraph"><p>The names of refs that are fetched, together with the object names
they point at, are written to <code>.git/FETCH_HEAD</code>.  This information
may be used by scripts or other git commands, such as <a href="git-pull.html">git-pull(1)</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--all
</dt>
<dd>
<p>
        Fetch all remotes.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--append
</dt>
<dd>
<p>
        Append ref names and object names of fetched refs to the
        existing contents of <code>.git/FETCH_HEAD</code>.  Without this
        option old data in <code>.git/FETCH_HEAD</code> will be overwritten.
</p>
</dd>
<dt class="hdlist1">
--depth=&lt;depth&gt;
</dt>
<dd>
<p>
        Limit fetching to the specified number of commits from the tip of
        each remote branch history. If fetching to a <em>shallow</em> repository
        created by <code>git clone</code> with <code>--depth=&lt;depth&gt;</code> option (see
        <a href="git-clone.html">git-clone(1)</a>), deepen or shorten the history to the specified
        number of commits. Tags for the deepened commits are not fetched.
</p>
</dd>
<dt class="hdlist1">
--deepen=&lt;depth&gt;
</dt>
<dd>
<p>
        Similar to --depth, except it specifies the number of commits
        from the current shallow boundary instead of from the tip of
        each remote branch history.
</p>
</dd>
<dt class="hdlist1">
--shallow-since=&lt;date&gt;
</dt>
<dd>
<p>
        Deepen or shorten the history of a shallow repository to
        include all reachable commits after &lt;date&gt;.
</p>
</dd>
<dt class="hdlist1">
--shallow-exclude=&lt;revision&gt;
</dt>
<dd>
<p>
        Deepen or shorten the history of a shallow repository to
        exclude commits reachable from a specified remote branch or tag.
        This option can be specified multiple times.
</p>
</dd>
<dt class="hdlist1">
--unshallow
</dt>
<dd>
<p>
        If the source repository is complete, convert a shallow
        repository to a complete one, removing all the limitations
        imposed by shallow repositories.
</p>
<div class="paragraph"><p>If the source repository is shallow, fetch as much as possible so that
the current repository has the same history as the source repository.</p></div>
</dd>
<dt class="hdlist1">
--update-shallow
</dt>
<dd>
<p>
        By default when fetching from a shallow repository,
        <code>git fetch</code> refuses refs that require updating
        .git/shallow. This option updates .git/shallow and accept such
        refs.
</p>
</dd>
<dt class="hdlist1">
--negotiation-tip=&lt;commit|glob&gt;
</dt>
<dd>
<p>
        By default, Git will report, to the server, commits reachable
        from all local refs to find common commits in an attempt to
        reduce the size of the to-be-received packfile. If specified,
        Git will only report commits reachable from the given tips.
        This is useful to speed up fetches when the user knows which
        local ref is likely to have commits in common with the
        upstream ref being fetched.
</p>
<div class="paragraph"><p>This option may be specified more than once; if so, Git will report
commits reachable from any of the given commits.</p></div>
<div class="paragraph"><p>The argument to this option may be a glob on ref names, a ref, or the (possibly
abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
this option multiple times, one for each matching ref name.</p></div>
<div class="paragraph"><p>See also the <code>fetch.negotiationAlgorithm</code> configuration variable
documented in <a href="git-config.html">git-config(1)</a>.</p></div>
</dd>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Show what would be done, without making any changes.
</p>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        When <em>git fetch</em> is used with <code>&lt;src&gt;:&lt;dst&gt;</code> refspec it may
        refuse to update the local branch as discussed
        in the <code>&lt;refspec&gt;</code> part below.
        This option overrides that check.
</p>
</dd>
<dt class="hdlist1">
-k
</dt>
<dt class="hdlist1">
--keep
</dt>
<dd>
<p>
        Keep downloaded pack.
</p>
</dd>
<dt class="hdlist1">
--multiple
</dt>
<dd>
<p>
        Allow several &lt;repository&gt; and &lt;group&gt; arguments to be
        specified. No &lt;refspec&gt;s may be specified.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--prune
</dt>
<dd>
<p>
        Before fetching, remove any remote-tracking references that no
        longer exist on the remote.  Tags are not subject to pruning
        if they are fetched only because of the default tag
        auto-following or due to a --tags option.  However, if tags
        are fetched due to an explicit refspec (either on the command
        line or in the remote configuration, for example if the remote
        was cloned with the --mirror option), then they are also
        subject to pruning. Supplying <code>--prune-tags</code> is a shorthand for
        providing the tag refspec.
</p>
<div class="paragraph"><p>See the PRUNING section below for more details.</p></div>
</dd>
<dt class="hdlist1">
-P
</dt>
<dt class="hdlist1">
--prune-tags
</dt>
<dd>
<p>
        Before fetching, remove any local tags that no longer exist on
        the remote if <code>--prune</code> is enabled. This option should be used
        more carefully, unlike <code>--prune</code> it will remove any local
        references (local tags) that have been created. This option is
        a shorthand for providing the explicit tag refspec along with
        <code>--prune</code>, see the discussion about that in its documentation.
</p>
<div class="paragraph"><p>See the PRUNING section below for more details.</p></div>
</dd>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--no-tags
</dt>
<dd>
<p>
        By default, tags that point at objects that are downloaded
        from the remote repository are fetched and stored locally.
        This option disables this automatic tag following. The default
        behavior for a remote may be specified with the remote.&lt;name&gt;.tagOpt
        setting. See <a href="git-config.html">git-config(1)</a>.
</p>
</dd>
<dt class="hdlist1">
--refmap=&lt;refspec&gt;
</dt>
<dd>
<p>
        When fetching refs listed on the command line, use the
        specified refspec (can be given more than once) to map the
        refs to remote-tracking branches, instead of the values of
        <code>remote.*.fetch</code> configuration variables for the remote
        repository.  See section on "Configured Remote-tracking
        Branches" for details.
</p>
</dd>
<dt class="hdlist1">
-t
</dt>
<dt class="hdlist1">
--tags
</dt>
<dd>
<p>
        Fetch all tags from the remote (i.e., fetch remote tags
        <code>refs/tags/*</code> into local tags with the same name), in addition
        to whatever else would otherwise be fetched.  Using this
        option alone does not subject tags to pruning, even if --prune
        is used (though tags may be pruned anyway if they are also the
        destination of an explicit refspec; see <code>--prune</code>).
</p>
</dd>
<dt class="hdlist1">
--recurse-submodules[=yes|on-demand|no]
</dt>
<dd>
<p>
        This option controls if and under what conditions new commits of
        populated submodules should be fetched too. It can be used as a
        boolean option to completely disable recursion when set to <em>no</em> or to
        unconditionally recurse into all populated submodules when set to
        <em>yes</em>, which is the default when this option is used without any
        value. Use <em>on-demand</em> to only recurse into a populated submodule
        when the superproject retrieves a commit that updates the submodule&#8217;s
        reference to a commit that isn&#8217;t already in the local submodule
        clone.
</p>
</dd>
<dt class="hdlist1">
-j
</dt>
<dt class="hdlist1">
--jobs=&lt;n&gt;
</dt>
<dd>
<p>
        Number of parallel children to be used for fetching submodules.
        Each will fetch from different submodules, such that fetching many
        submodules will be faster. By default submodules will be fetched
        one at a time.
</p>
</dd>
<dt class="hdlist1">
--no-recurse-submodules
</dt>
<dd>
<p>
        Disable recursive fetching of submodules (this has the same effect as
        using the <code>--recurse-submodules=no</code> option).
</p>
</dd>
<dt class="hdlist1">
--submodule-prefix=&lt;path&gt;
</dt>
<dd>
<p>
        Prepend &lt;path&gt; to paths printed in informative messages
        such as "Fetching submodule foo".  This option is used
        internally when recursing over submodules.
</p>
</dd>
<dt class="hdlist1">
--recurse-submodules-default=[yes|on-demand]
</dt>
<dd>
<p>
        This option is used internally to temporarily provide a
        non-negative default value for the --recurse-submodules
        option.  All other methods of configuring fetch&#8217;s submodule
        recursion (such as settings in <a href="gitmodules.html">gitmodules(5)</a> and
        <a href="git-config.html">git-config(1)</a>) override this option, as does
        specifying --[no-]recurse-submodules directly.
</p>
</dd>
<dt class="hdlist1">
-u
</dt>
<dt class="hdlist1">
--update-head-ok
</dt>
<dd>
<p>
        By default <em>git fetch</em> refuses to update the head which
        corresponds to the current branch.  This flag disables the
        check.  This is purely for the internal use for <em>git pull</em>
        to communicate with <em>git fetch</em>, and unless you are
        implementing your own Porcelain you are not supposed to
        use it.
</p>
</dd>
<dt class="hdlist1">
--upload-pack &lt;upload-pack&gt;
</dt>
<dd>
<p>
        When given, and the repository to fetch from is handled
        by <em>git fetch-pack</em>, <code>--exec=&lt;upload-pack&gt;</code> is passed to
        the command to specify non-default path for the command
        run on the other end.
</p>
</dd>
<dt class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Pass --quiet to git-fetch-pack and silence any other internally
        used git commands. Progress is not reported to the standard error
        stream.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Be verbose.
</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">
-o &lt;option&gt;
</dt>
<dt class="hdlist1">
--server-option=&lt;option&gt;
</dt>
<dd>
<p>
        Transmit the given string to the server when communicating using
        protocol version 2.  The given string must not contain a NUL or LF
        character.
        When multiple <code>--server-option=&lt;option&gt;</code> are given, they are all
        sent to the other side in the order listed on the command line.
</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>
<dt class="hdlist1">
&lt;repository&gt;
</dt>
<dd>
<p>
        The "remote" repository that is the source of a fetch
        or pull 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;group&gt;
</dt>
<dd>
<p>
        A name referring to a list of repositories as the value
        of remotes.&lt;group&gt; in the configuration file.
        (See <a href="git-config.html">git-config(1)</a>).
</p>
</dd>
<dt class="hdlist1">
&lt;refspec&gt;
</dt>
<dd>
<p>
        Specifies which refs to fetch and which local refs to update.
        When no &lt;refspec&gt;s appear on the command line, the refs to fetch
        are read from <code>remote.&lt;repository&gt;.fetch</code> variables instead
        (see <a href="#CRTB">CONFIGURED REMOTE-TRACKING BRANCHES</a> below).
</p>
<div class="paragraph"><p>The format of a &lt;refspec&gt; parameter is an optional plus
<code>+</code>, followed by the source &lt;src&gt;, followed
by a colon <code>:</code>, followed by the destination ref &lt;dst&gt;.
The colon can be omitted when &lt;dst&gt; is empty.  &lt;src&gt; is
typically a ref, but it can also be a fully spelled hex object
name.</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>;
it requests fetching everything up to the given tag.</p></div>
<div class="paragraph"><p>The remote ref that matches &lt;src&gt;
is fetched, and if &lt;dst&gt; is not an empty string, an attempt
is made to update the local ref that matches it.</p></div>
<div class="paragraph"><p>Whether that update is allowed without <code>--force</code> depends on the ref
namespace it&#8217;s being fetched to, the type of object being fetched, and
whether the update is considered to be a fast-forward. Generally, the
same rules apply for fetching as when pushing, see the <code>&lt;refspec&gt;...</code>
section of <a href="git-push.html">git-push(1)</a> for what those are. Exceptions to those
rules particular to <em>git fetch</em> are noted below.</p></div>
<div class="paragraph"><p>Until Git version 2.20, and unlike when pushing with
<a href="git-push.html">git-push(1)</a>, any updates to <code>refs/tags/*</code> would be accepted
without <code>+</code> in the refspec (or <code>--force</code>). When fetching, we promiscuously
considered all tag updates from a remote to be forced fetches.  Since
Git version 2.20, fetching to update <code>refs/tags/*</code> works the same way
as when pushing. I.e. any updates will be rejected without <code>+</code> in the
refspec (or <code>--force</code>).</p></div>
<div class="paragraph"><p>Unlike when pushing with <a href="git-push.html">git-push(1)</a>, any updates outside of
<code>refs/{tags,heads}/*</code> will be accepted without <code>+</code> in the refspec (or
<code>--force</code>), whether that&#8217;s swapping e.g. a tree object for a blob, or
a commit for another commit that&#8217;s doesn&#8217;t have the previous commit as
an ancestor etc.</p></div>
<div class="paragraph"><p>Unlike when pushing with <a href="git-push.html">git-push(1)</a>, there is no
configuration which&#8217;ll amend these rules, and nothing like a
<code>pre-fetch</code> hook analogous to the <code>pre-receive</code> hook.</p></div>
<div class="paragraph"><p>As with pushing with <a href="git-push.html">git-push(1)</a>, all of the rules described
above about what&#8217;s not allowed as an update can be overridden by
adding an the optional leading <code>+</code> to a refspec (or using <code>--force</code>
command line option). The only exception to this is that no amount of
forcing will make the <code>refs/heads/*</code> namespace accept a non-commit
object.</p></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">When the remote branch you want to fetch is known to
be rewound and rebased regularly, it is expected that
its new tip will not be descendant of its previous tip
(as stored in your remote-tracking branch the last time
you fetched).  You would want
to use the <code>+</code> sign to indicate non-fast-forward updates
will be needed for such branches.  There is no way to
determine or declare that a branch will be made available
in a repository with this behavior; the pulling user simply
must know this is the expected usage pattern for a branch.</td>
</tr></table>
</div>
</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="_configured_remote_tracking_branches_a_id_crtb_a">CONFIGURED REMOTE-TRACKING BRANCHES<a id="CRTB"></a></h2>
<div class="sectionbody">
<div class="paragraph"><p>You often interact with the same remote repository by
regularly and repeatedly fetching from it.  In order to keep track
of the progress of such a remote repository, <code>git fetch</code> allows you
to configure <code>remote.&lt;repository&gt;.fetch</code> configuration variables.</p></div>
<div class="paragraph"><p>Typically such a variable may look like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*</code></pre>
</div></div>
<div class="paragraph"><p>This configuration is used in two ways:</p></div>
<div class="ulist"><ul>
<li>
<p>
When <code>git fetch</code> is run without specifying what branches
  and/or tags to fetch on the command line, e.g. <code>git fetch origin</code>
  or <code>git fetch</code>, <code>remote.&lt;repository&gt;.fetch</code> values are used as
  the refspecs&#8212;they specify which refs to fetch and which local refs
  to update.  The example above will fetch
  all branches that exist in the <code>origin</code> (i.e. any ref that matches
  the left-hand side of the value, <code>refs/heads/*</code>) and update the
  corresponding remote-tracking branches in the <code>refs/remotes/origin/*</code>
  hierarchy.
</p>
</li>
<li>
<p>
When <code>git fetch</code> is run with explicit branches and/or tags
  to fetch on the command line, e.g. <code>git fetch origin master</code>, the
  &lt;refspec&gt;s given on the command line determine what are to be
  fetched (e.g. <code>master</code> in the example,
  which is a short-hand for <code>master:</code>, which in turn means
  "fetch the <em>master</em> branch but I do not explicitly say what
  remote-tracking branch to update with it from the command line"),
  and the example command will
  fetch <em>only</em> the <em>master</em> branch.  The <code>remote.&lt;repository&gt;.fetch</code>
  values determine which
  remote-tracking branch, if any, is updated.  When used in this
  way, the <code>remote.&lt;repository&gt;.fetch</code> values do not have any
  effect in deciding <em>what</em> gets fetched (i.e. the values are not
  used as refspecs when the command-line lists refspecs); they are
  only used to decide <em>where</em> the refs that are fetched are stored
  by acting as a mapping.
</p>
</li>
</ul></div>
<div class="paragraph"><p>The latter use of the <code>remote.&lt;repository&gt;.fetch</code> values can be
overridden by giving the <code>--refmap=&lt;refspec&gt;</code> parameter(s) on the
command line.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_pruning">PRUNING</h2>
<div class="sectionbody">
<div class="paragraph"><p>Git has a default disposition of keeping data unless it&#8217;s explicitly
thrown away; this extends to holding onto local references to branches
on remotes that have themselves deleted those branches.</p></div>
<div class="paragraph"><p>If left to accumulate, these stale references might make performance
worse on big and busy repos that have a lot of branch churn, and
e.g. make the output of commands like <code>git branch -a --contains
&lt;commit&gt;</code> needlessly verbose, as well as impacting anything else
that&#8217;ll work with the complete set of known references.</p></div>
<div class="paragraph"><p>These remote-tracking references can be deleted as a one-off with
either of:</p></div>
<div class="listingblock">
<div class="content">
<pre><code># While fetching
$ git fetch --prune &lt;name&gt;

# Only prune, don't fetch
$ git remote prune &lt;name&gt;</code></pre>
</div></div>
<div class="paragraph"><p>To prune references as part of your normal workflow without needing to
remember to run that, set <code>fetch.prune</code> globally, or
<code>remote.&lt;name&gt;.prune</code> per-remote in the config. See
<a href="git-config.html">git-config(1)</a>.</p></div>
<div class="paragraph"><p>Here&#8217;s where things get tricky and more specific. The pruning feature
doesn&#8217;t actually care about branches, instead it&#8217;ll prune local &lt;&#8594;
remote-references as a function of the refspec of the remote (see
<code>&lt;refspec&gt;</code> and <a href="#CRTB">CONFIGURED REMOTE-TRACKING BRANCHES</a> above).</p></div>
<div class="paragraph"><p>Therefore if the refspec for the remote includes
e.g. <code>refs/tags/*:refs/tags/*</code>, or you manually run e.g. <code>git fetch
--prune &lt;name&gt; "refs/tags/*:refs/tags/*"</code> it won&#8217;t be stale remote
tracking branches that are deleted, but any local tag that doesn&#8217;t
exist on the remote.</p></div>
<div class="paragraph"><p>This might not be what you expect, i.e. you want to prune remote
<code>&lt;name&gt;</code>, but also explicitly fetch tags from it, so when you fetch
from it you delete all your local tags, most of which may not have
come from the <code>&lt;name&gt;</code> remote in the first place.</p></div>
<div class="paragraph"><p>So be careful when using this with a refspec like
<code>refs/tags/*:refs/tags/*</code>, or any other refspec which might map
references from multiple remotes to the same local namespace.</p></div>
<div class="paragraph"><p>Since keeping up-to-date with both branches and tags on the remote is
a common use-case the <code>--prune-tags</code> option can be supplied along with
<code>--prune</code> to prune local tags that don&#8217;t exist on the remote, and
force-update those tags that differ. Tag pruning can also be enabled
with <code>fetch.pruneTags</code> or <code>remote.&lt;name&gt;.pruneTags</code> in the config. See
<a href="git-config.html">git-config(1)</a>.</p></div>
<div class="paragraph"><p>The <code>--prune-tags</code> option is equivalent to having
<code>refs/tags/*:refs/tags/*</code> declared in the refspecs of the remote. This
can lead to some seemingly strange interactions:</p></div>
<div class="listingblock">
<div class="content">
<pre><code># These both fetch tags
$ git fetch --no-tags origin 'refs/tags/*:refs/tags/*'
$ git fetch --no-tags --prune-tags origin</code></pre>
</div></div>
<div class="paragraph"><p>The reason it doesn&#8217;t error out when provided without <code>--prune</code> or its
config versions is for flexibility of the configured versions, and to
maintain a 1=1 mapping between what the command line flags do, and
what the configuration versions do.</p></div>
<div class="paragraph"><p>It&#8217;s reasonable to e.g. configure <code>fetch.pruneTags=true</code> in
<code>~/.gitconfig</code> to have tags pruned whenever <code>git fetch --prune</code> is
run, without making every invocation of <code>git fetch</code> without <code>--prune</code>
an error.</p></div>
<div class="paragraph"><p>Pruning tags with <code>--prune-tags</code> also works when fetching a URL
instead of a named remote. These will all prune tags not found on
origin:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>$ git fetch origin --prune --prune-tags
$ git fetch origin --prune 'refs/tags/*:refs/tags/*'
$ git fetch &lt;url of origin&gt; --prune --prune-tags
$ git fetch &lt;url of origin&gt; --prune 'refs/tags/*:refs/tags/*'</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_output">OUTPUT</h2>
<div class="sectionbody">
<div class="paragraph"><p>The output of "git fetch" depends on the transport method used; this
section describes the output when fetching over the Git protocol
(either locally or via ssh) and Smart HTTP protocol.</p></div>
<div class="paragraph"><p>The status of the fetch 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>The status of up-to-date refs is shown only if the --verbose option is
used.</p></div>
<div class="paragraph"><p>In compact output mode, specified with configuration variable
fetch.output, if either entire <code>&lt;from&gt;</code> or <code>&lt;to&gt;</code> is found in the
other string, it will be substituted with <code>*</code> in the other string. For
example, <code>master -&gt; origin/master</code> becomes <code>master -&gt; origin/*</code>.</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 fetched 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 pruned ref;
</p>
</dd>
<dt class="hdlist1">
<code>t</code>
</dt>
<dd>
<p>
for a successful tag update;
</p>
</dd>
<dt class="hdlist1">
<code>*</code>
</dt>
<dd>
<p>
for a successfully fetched new ref;
</p>
</dd>
<dt class="hdlist1">
<code>!</code>
</dt>
<dd>
<p>
for a ref that was rejected or failed to update; and
</p>
</dd>
<dt class="hdlist1">
<code>=</code>
</dt>
<dd>
<p>
for a ref that was up to date and did not need fetching.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
summary
</dt>
<dd>
<p>
        For a successfully fetched 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>
</dd>
<dt class="hdlist1">
from
</dt>
<dd>
<p>
        The name of the remote ref being fetched from, minus its
        <code>refs/&lt;type&gt;/</code> prefix. In the case of deletion, the name of
        the remote ref is "(none)".
</p>
</dd>
<dt class="hdlist1">
to
</dt>
<dd>
<p>
        The name of the local 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 fetched
        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="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Update the remote-tracking branches:
</p>
<div class="listingblock">
<div class="content">
<pre><code>$ git fetch origin</code></pre>
</div></div>
<div class="paragraph"><p>The above command copies all branches from the remote refs/heads/
namespace and stores them to the local refs/remotes/origin/ namespace,
unless the branch.&lt;name&gt;.fetch option is used to specify a non-default
refspec.</p></div>
</li>
<li>
<p>
Using refspecs explicitly:
</p>
<div class="listingblock">
<div class="content">
<pre><code>$ git fetch origin +pu:pu maint:tmp</code></pre>
</div></div>
<div class="paragraph"><p>This updates (or creates, as necessary) branches <code>pu</code> and <code>tmp</code> in
the local repository by fetching from the branches (respectively)
<code>pu</code> and <code>maint</code> from the remote repository.</p></div>
<div class="paragraph"><p>The <code>pu</code> branch will be updated even if it is does not fast-forward,
because it is prefixed with a plus sign; <code>tmp</code> will not be.</p></div>
</li>
<li>
<p>
Peek at a remote&#8217;s branch, without configuring the remote in your local
  repository:
</p>
<div class="listingblock">
<div class="content">
<pre><code>$ git fetch git://git.kernel.org/pub/scm/git/git.git maint
$ git log FETCH_HEAD</code></pre>
</div></div>
<div class="paragraph"><p>The first command fetches the <code>maint</code> branch from the repository at
<code>git://git.kernel.org/pub/scm/git/git.git</code> and the second command uses
<code>FETCH_HEAD</code> to examine the branch with <a href="git-log.html">git-log(1)</a>.  The fetched
objects will eventually be removed by git&#8217;s built-in housekeeping (see
<a href="git-gc.html">git-gc(1)</a>).</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_security">SECURITY</h2>
<div class="sectionbody">
<div class="paragraph"><p>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.</p></div>
<div class="paragraph"><p>The known attack vectors are as follows:</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
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&#8217;t 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.)
</p>
</li>
<li>
<p>
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.
</p>
</li>
</ol></div>
</div>
</div>
<div class="sect1">
<h2 id="_bugs">BUGS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Using --recurse-submodules can only fetch new commits in already checked
out submodules right now. When e.g. upstream added a new submodule in the
just fetched commits of the superproject the submodule itself can not be
fetched, making it impossible to check out that submodule later without
having to do a fetch again. This is expected to be fixed in a future Git
version.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="git-pull.html">git-pull(1)</a></p></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
 2019-02-05 15:33:20 PST
</div>
</div>
</body>
</html>
