<!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.6" />
<title>git-pull(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; }

pre {
  padding: 0;
  margin: 0;
}

#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; }
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.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; }


/*
 * xhtml11 specific
 *
 * */

tt {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

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
 *
 * */

.monospaced {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

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]([2-'+(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 == '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 == '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-pull(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-pull -
   Fetch from and integrate with another repository or a local branch
</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 pull</em> [options] [&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>Incorporates changes from a remote repository into the current
branch.  In its default mode, <tt>git pull</tt> is shorthand for
<tt>git fetch</tt> followed by <tt>git merge FETCH_HEAD</tt>.</p></div>
<div class="paragraph"><p>More precisely, <em>git pull</em> runs <em>git fetch</em> with the given
parameters and calls <em>git merge</em> to merge the retrieved branch
heads into the current branch.
With <tt>--rebase</tt>, it runs <em>git rebase</em> instead of <em>git merge</em>.</p></div>
<div class="paragraph"><p>&lt;repository&gt; should be the name of a remote repository as
passed to <a href="git-fetch.html">git-fetch(1)</a>.  &lt;refspec&gt; can name an
arbitrary remote ref (for example, the name of a tag) or even
a collection of refs with corresponding remote-tracking branches
(e.g., refs/heads/&#42;:refs/remotes/origin/&#42;),
but usually it is the name of a branch in the remote repository.</p></div>
<div class="paragraph"><p>Default values for &lt;repository&gt; and &lt;branch&gt; are read from the
"remote" and "merge" configuration for the current branch
as set by <a href="git-branch.html">git-branch(1)</a> <tt>--track</tt>.</p></div>
<div class="paragraph"><p>Assume the following history exists and the current branch is
"<tt>master</tt>":</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>          A---B---C master on origin
         /
    D---E---F---G master
        ^
        origin/master in your repository</tt></pre>
</div></div>
<div class="paragraph"><p>Then "<tt>git pull</tt>" will fetch and replay the changes from the remote
<tt>master</tt> branch since it diverged from the local <tt>master</tt> (i.e., <tt>E</tt>)
until its current commit (<tt>C</tt>) on top of <tt>master</tt> and record the
result in a new commit along with the names of the two parent commits
and a log message from the user describing the changes.</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>          A---B---C origin/master
         /         \
    D---E---F---G---H master</tt></pre>
</div></div>
<div class="paragraph"><p>See <a href="git-merge.html">git-merge(1)</a> for details, including how conflicts
are presented and handled.</p></div>
<div class="paragraph"><p>In Git 1.7.0 or later, to cancel a conflicting merge, use
<tt>git reset --merge</tt>.  <strong>Warning</strong>: In older versions of Git, running <em>git pull</em>
with uncommitted changes is discouraged: while possible, it leaves you
in a state that may be hard to back out of in the case of a conflict.</p></div>
<div class="paragraph"><p>If any of the remote changes overlap with local uncommitted changes,
the merge will be automatically cancelled and the work tree untouched.
It is generally best to get any local changes in working order before
pulling or stash them away with <a href="git-stash.html">git-stash(1)</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Options meant for <em>git pull</em> itself and the underlying <em>git merge</em>
must be given before the options meant for <em>git fetch</em>.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        This is passed to both underlying git-fetch to squelch reporting of
        during transfer, and underlying git-merge to squelch output during
        merging.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Pass --verbose to git-fetch and git-merge.
</p>
</dd>
<dt class="hdlist1">
--[no-]recurse-submodules[=yes|on-demand|no]
</dt>
<dd>
<p>
        This option controls if new commits of all populated submodules should
        be fetched too (see <a href="git-config.html">git-config(1)</a> and <a href="gitmodules.html">gitmodules(5)</a>).
        That might be necessary to get the data needed for merging submodule
        commits, a feature Git learned in 1.7.3. Notice that the result of a
        merge will not be checked out in the submodule, "git submodule update"
        has to be called afterwards to bring the work tree up to date with the
        merge result.
</p>
</dd>
</dl></div>
<div class="sect2">
<h3 id="_options_related_to_merging">Options related to merging</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
--commit
</dt>
<dt class="hdlist1">
--no-commit
</dt>
<dd>
<p>
        Perform the merge and commit the result. This option can
        be used to override --no-commit.
</p>
<div class="paragraph"><p>With --no-commit perform the merge but pretend the merge
failed and do not autocommit, to give the user a chance to
inspect and further tweak the merge result before committing.</p></div>
</dd>
<dt class="hdlist1">
--edit
</dt>
<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
--no-edit
</dt>
<dd>
<p>
        Invoke an editor before committing successful mechanical merge to
        further edit the auto-generated merge message, so that the user
        can explain and justify the merge. The <tt>--no-edit</tt> option can be
        used to accept the auto-generated message (this is generally
        discouraged).
</p>
<div class="paragraph"><p>Older scripts may depend on the historical behaviour of not allowing the
user to edit the merge log message. They will see an editor opened when
they run <tt>git merge</tt>. To make it easier to adjust such scripts to the
updated behaviour, the environment variable <tt>GIT_MERGE_AUTOEDIT</tt> can be
set to <tt>no</tt> at the beginning of them.</p></div>
</dd>
<dt class="hdlist1">
--ff
</dt>
<dd>
<p>
        When the merge resolves as a fast-forward, only update the branch
        pointer, without creating a merge commit.  This is the default
        behavior.
</p>
</dd>
<dt class="hdlist1">
--no-ff
</dt>
<dd>
<p>
        Create a merge commit even when the merge resolves as a
        fast-forward.  This is the default behaviour when merging an
        annotated (and possibly signed) tag.
</p>
</dd>
<dt class="hdlist1">
--ff-only
</dt>
<dd>
<p>
        Refuse to merge and exit with a non-zero status unless the
        current <tt>HEAD</tt> is already up-to-date or the merge can be
        resolved as a fast-forward.
</p>
</dd>
<dt class="hdlist1">
--log[=&lt;n&gt;]
</dt>
<dt class="hdlist1">
--no-log
</dt>
<dd>
<p>
        In addition to branch names, populate the log message with
        one-line descriptions from at most &lt;n&gt; actual commits that are being
        merged. See also <a href="git-fmt-merge-msg.html">git-fmt-merge-msg(1)</a>.
</p>
<div class="paragraph"><p>With --no-log do not list one-line descriptions from the
actual commits being merged.</p></div>
</dd>
<dt class="hdlist1">
--stat
</dt>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--no-stat
</dt>
<dd>
<p>
        Show a diffstat at the end of the merge. The diffstat is also
        controlled by the configuration option merge.stat.
</p>
<div class="paragraph"><p>With -n or --no-stat do not show a diffstat at the end of the
merge.</p></div>
</dd>
<dt class="hdlist1">
--squash
</dt>
<dt class="hdlist1">
--no-squash
</dt>
<dd>
<p>
        Produce the working tree and index state as if a real merge
        happened (except for the merge information), but do not actually
        make a commit, move the <tt>HEAD</tt>, or record <tt>$GIT_DIR/MERGE_HEAD</tt>
        (to cause the next <tt>git commit</tt> command to create a merge
        commit).  This allows you to create a single commit on top of
        the current branch whose effect is the same as merging another
        branch (or more in case of an octopus).
</p>
<div class="paragraph"><p>With --no-squash perform the merge and commit the result. This
option can be used to override --squash.</p></div>
</dd>
<dt class="hdlist1">
-s &lt;strategy&gt;
</dt>
<dt class="hdlist1">
--strategy=&lt;strategy&gt;
</dt>
<dd>
<p>
        Use the given merge strategy; can be supplied more than
        once to specify them in the order they should be tried.
        If there is no <tt>-s</tt> option, a built-in list of strategies
        is used instead (<em>git merge-recursive</em> when merging a single
        head, <em>git merge-octopus</em> otherwise).
</p>
</dd>
<dt class="hdlist1">
-X &lt;option&gt;
</dt>
<dt class="hdlist1">
--strategy-option=&lt;option&gt;
</dt>
<dd>
<p>
        Pass merge strategy specific option through to the merge
        strategy.
</p>
</dd>
<dt class="hdlist1">
--verify-signatures
</dt>
<dt class="hdlist1">
--no-verify-signatures
</dt>
<dd>
<p>
        Verify that the commits being merged have good and trusted GPG signatures
        and abort the merge in case they do not.
</p>
</dd>
<dt class="hdlist1">
--summary
</dt>
<dt class="hdlist1">
--no-summary
</dt>
<dd>
<p>
        Synonyms to --stat and --no-stat; these are deprecated and will be
        removed in the future.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rebase[=false|true|preserve]
</dt>
<dd>
<p>
        When true, rebase the current branch on top of the upstream
        branch after fetching. If there is a remote-tracking branch
        corresponding to the upstream branch and the upstream branch
        was rebased since last fetched, the rebase uses that information
        to avoid rebasing non-local changes.
</p>
<div class="paragraph"><p>When preserve, also rebase the current branch on top of the upstream
branch, but pass <tt>--preserve-merges</tt> along to <tt>git rebase</tt> so that
locally created merge commits will not be flattened.</p></div>
<div class="paragraph"><p>When false, merge the current branch into the upstream branch.</p></div>
<div class="paragraph"><p>See <tt>pull.rebase</tt>, <tt>branch.&lt;name&gt;.rebase</tt> and <tt>branch.autosetuprebase</tt> in
<a href="git-config.html">git-config(1)</a> if you want to make <tt>git pull</tt> always use
<tt>--rebase</tt> instead of merging.</p></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">This is a potentially <em>dangerous</em> mode of operation.
It rewrites history, which does not bode well when you
published that history already.  Do <strong>not</strong> use this option
unless you have read <a href="git-rebase.html">git-rebase(1)</a> carefully.</td>
</tr></table>
</div>
</dd>
<dt class="hdlist1">
--no-rebase
</dt>
<dd>
<p>
        Override earlier --rebase.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_options_related_to_fetching">Options related to fetching</h3>
<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 <tt>.git/FETCH_HEAD</tt>.  Without this
        option old data in <tt>.git/FETCH_HEAD</tt> will be overwritten.
</p>
</dd>
<dt class="hdlist1">
--depth=&lt;depth&gt;
</dt>
<dd>
<p>
        Deepen or shorten the history of a <em>shallow</em> repository created by
        <tt>git clone</tt> with <tt>--depth=&lt;depth&gt;</tt> option (see <a href="git-clone.html">git-clone(1)</a>)
        to the specified number of commits from the tip of each remote
        branch history. Tags for the deepened commits are not fetched.
</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,
        <tt>git fetch</tt> refuses refs that require updating
        .git/shallow. This option updates .git/shallow and accept such
        refs.
</p>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        When <em>git fetch</em> is used with <tt>&lt;rbranch&gt;:&lt;lbranch&gt;</tt>
        refspec, it refuses to update the local branch
        <tt>&lt;lbranch&gt;</tt> unless the remote branch <tt>&lt;rbranch&gt;</tt> it
        fetches is a descendant of <tt>&lt;lbranch&gt;</tt>.  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">
--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">
-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>, <em>--exec=&lt;upload-pack&gt;</em> is passed to
        the command to specify non-default path for the command
        run on the other end.
</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">
&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;refspec&gt;
</dt>
<dd>
<p>
        The format of a &lt;refspec&gt; parameter is an optional plus
        <tt>+</tt>, followed by the source ref &lt;src&gt;, followed
        by a colon <tt>:</tt>, followed by the destination ref &lt;dst&gt;.
</p>
<div class="paragraph"><p>The remote ref that matches &lt;src&gt;
is fetched, and if &lt;dst&gt; is not empty string, the local
ref that matches it is fast-forwarded using &lt;src&gt;.
If the optional plus <tt>+</tt> is used, the local ref
is updated even if it does not result in a fast-forward
update.</p></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">If the remote branch from which you want to pull is
modified in non-linear ways such as being rewound and
rebased frequently, then a pull will attempt a merge with
an older version of itself, likely conflict, and fail.
It is under these conditions that you would want to use
the <tt>+</tt> sign to indicate non-fast-forward updates will
be needed.  There is currently no easy 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>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">You never do your own development on branches that appear
on the right hand side of a &lt;refspec&gt; colon on <tt>Pull:</tt> lines;
they are to be updated by <em>git fetch</em>.  If you intend to do
development derived from a remote branch <tt>B</tt>, have a <tt>Pull:</tt>
line to track it (i.e. <tt>Pull: B:remote-B</tt>), and have a separate
branch <tt>my-B</tt> to do your development on top of it.  The latter
is created by <tt>git branch my-B remote-B</tt> (or its equivalent <tt>git
checkout -b my-B remote-B</tt>).  Run <tt>git fetch</tt> to keep track of
the progress of the remote side, and when you see something new
on the remote branch, merge it into your development branch with
<tt>git pull . remote-B</tt>, while you are on <tt>my-B</tt> branch.</td>
</tr></table>
</div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">There is a difference between listing multiple &lt;refspec&gt;
directly on <em>git pull</em> command line and having multiple
<tt>Pull:</tt> &lt;refspec&gt; lines for a &lt;repository&gt; and running
<em>git pull</em> command without any explicit &lt;refspec&gt; parameters.
&lt;refspec&gt; listed explicitly on the command line are always
merged into the current branch after fetching.  In other words,
if you list more than one remote refs, you would be making
an Octopus.  While <em>git pull</em> run without any explicit &lt;refspec&gt;
parameter takes default &lt;refspec&gt;s from <tt>Pull:</tt> lines, it
merges only the first &lt;refspec&gt; found into the current branch,
after fetching all the remote refs.  This is because making an
Octopus from remote refs is rarely done, while keeping track
of multiple remote heads in one-go by fetching more than one
is often useful.</td>
</tr></table>
</div>
<div class="paragraph"><p>Some short-cut notations are also supported.</p></div>
<div class="ulist"><ul>
<li>
<p>
<tt>tag &lt;tag&gt;</tt> means the same as <tt>refs/tags/&lt;tag&gt;:refs/tags/&lt;tag&gt;</tt>;
  it requests fetching everything up to the given tag.
</p>
</li>
<li>
<p>
A parameter &lt;ref&gt; without a colon merges &lt;ref&gt; into the current
  branch,
  and updates the remote-tracking branches (if any).
</p>
</li>
</ul></div>
</dd>
</dl></div>
</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 and rsync can be used for fetching
and pushing, but these are inefficient and deprecated; do not use
them).</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>
<li>
<p>
rsync://host.xz/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 <tt>foo:bar</tt> could be specified as an
absolute path or <tt>./foo:bar</tt> 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><tt>        [url "&lt;actual url base&gt;"]
                insteadOf = &lt;other url base&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>For example, with this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>        [url "git://git.host.xz/"]
                insteadOf = host.xz:/path/to/
                insteadOf = work:</tt></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><tt>        [url "&lt;actual url base&gt;"]
                pushInsteadOf = &lt;other url base&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>For example, with this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>        [url "ssh://example.org/"]
                pushInsteadOf = git://example.org/</tt></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 <tt>&lt;repository&gt;</tt> argument:</p></div>
<div class="ulist"><ul>
<li>
<p>
a remote in the Git configuration file: <tt>$GIT_DIR/config</tt>,
</p>
</li>
<li>
<p>
a file in the <tt>$GIT_DIR/remotes</tt> directory, or
</p>
</li>
<li>
<p>
a file in the <tt>$GIT_DIR/branches</tt> 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 <tt>$GIT_DIR/config</tt> 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><tt>        [remote "&lt;name&gt;"]
                url = &lt;url&gt;
                pushurl = &lt;pushurl&gt;
                push = &lt;refspec&gt;
                fetch = &lt;refspec&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>The <tt>&lt;pushurl&gt;</tt> is used for pushes only. It is optional and defaults
to <tt>&lt;url&gt;</tt>.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_tt_git_dir_remotes_tt">Named file in <tt>$GIT_DIR/remotes</tt></h3>
<div class="paragraph"><p>You can choose to provide the name of a
file in <tt>$GIT_DIR/remotes</tt>.  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><tt>        URL: one of the above URL format
        Push: &lt;refspec&gt;
        Pull: &lt;refspec&gt;</tt></pre>
</div></div>
<div class="paragraph"><p><tt>Push:</tt> lines are used by <em>git push</em> and
<tt>Pull:</tt> lines are used by <em>git pull</em> and <em>git fetch</em>.
Multiple <tt>Push:</tt> and <tt>Pull:</tt> lines may
be specified for additional branch mappings.</p></div>
</div>
<div class="sect2">
<h3 id="_named_file_in_tt_git_dir_branches_tt">Named file in <tt>$GIT_DIR/branches</tt></h3>
<div class="paragraph"><p>You can choose to provide the name of a
file in <tt>$GIT_DIR/branches</tt>.
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><tt>        &lt;url&gt;#&lt;head&gt;</tt></pre>
</div></div>
<div class="paragraph"><p><tt>&lt;url&gt;</tt> is required; <tt>#&lt;head&gt;</tt> 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.
<tt>&lt;branch&gt;</tt> is the name of this file in <tt>$GIT_DIR/branches</tt> and
<tt>&lt;head&gt;</tt> defaults to <tt>master</tt>.</p></div>
<div class="paragraph"><p>git fetch uses:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>        refs/heads/&lt;head&gt;:refs/heads/&lt;branch&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>git push uses:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>        HEAD:refs/heads/&lt;head&gt;</tt></pre>
</div></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_merge_strategies">MERGE STRATEGIES</h2>
<div class="sectionbody">
<div class="paragraph"><p>The merge mechanism (<tt>git merge</tt> and <tt>git pull</tt> commands) allows the
backend <em>merge strategies</em> to be chosen with <tt>-s</tt> option.  Some strategies
can also take their own options, which can be passed by giving <tt>-X&lt;option&gt;</tt>
arguments to <tt>git merge</tt> and/or <tt>git pull</tt>.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
resolve
</dt>
<dd>
<p>
        This can only resolve two heads (i.e. the current branch
        and another branch you pulled from) using a 3-way merge
        algorithm.  It tries to carefully detect criss-cross
        merge ambiguities and is considered generally safe and
        fast.
</p>
</dd>
<dt class="hdlist1">
recursive
</dt>
<dd>
<p>
        This can only resolve two heads using a 3-way merge
        algorithm.  When there is more than one common
        ancestor that can be used for 3-way merge, it creates a
        merged tree of the common ancestors and uses that as
        the reference tree for the 3-way merge.  This has been
        reported to result in fewer merge conflicts without
        causing mismerges by tests done on actual merge commits
        taken from Linux 2.6 kernel development history.
        Additionally this can detect and handle merges involving
        renames.  This is the default merge strategy when
        pulling or merging one branch.
</p>
<div class="paragraph"><p>The <em>recursive</em> strategy can take the following options:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
ours
</dt>
<dd>
<p>
        This option forces conflicting hunks to be auto-resolved cleanly by
        favoring <em>our</em> version.  Changes from the other tree that do not
        conflict with our side are reflected to the merge result.
        For a binary file, the entire contents are taken from our side.
</p>
<div class="paragraph"><p>This should not be confused with the <em>ours</em> merge strategy, which does not
even look at what the other tree contains at all.  It discards everything
the other tree did, declaring <em>our</em> history contains all that happened in it.</p></div>
</dd>
<dt class="hdlist1">
theirs
</dt>
<dd>
<p>
        This is the opposite of <em>ours</em>.
</p>
</dd>
<dt class="hdlist1">
patience
</dt>
<dd>
<p>
        With this option, <em>merge-recursive</em> spends a little extra time
        to avoid mismerges that sometimes occur due to unimportant
        matching lines (e.g., braces from distinct functions).  Use
        this when the branches to be merged have diverged wildly.
        See also <a href="git-diff.html">git-diff(1)</a> <tt>--patience</tt>.
</p>
</dd>
<dt class="hdlist1">
diff-algorithm=[patience|minimal|histogram|myers]
</dt>
<dd>
<p>
        Tells <em>merge-recursive</em> to use a different diff algorithm, which
        can help avoid mismerges that occur due to unimportant matching
        lines (such as braces from distinct functions).  See also
        <a href="git-diff.html">git-diff(1)</a> <tt>--diff-algorithm</tt>.
</p>
</dd>
<dt class="hdlist1">
ignore-space-change
</dt>
<dt class="hdlist1">
ignore-all-space
</dt>
<dt class="hdlist1">
ignore-space-at-eol
</dt>
<dd>
<p>
        Treats lines with the indicated type of whitespace change as
        unchanged for the sake of a three-way merge.  Whitespace
        changes mixed with other changes to a line are not ignored.
        See also <a href="git-diff.html">git-diff(1)</a> <tt>-b</tt>, <tt>-w</tt>, and
        <tt>--ignore-space-at-eol</tt>.
</p>
<div class="ulist"><ul>
<li>
<p>
If <em>their</em> version only introduces whitespace changes to a line,
  <em>our</em> version is used;
</p>
</li>
<li>
<p>
If <em>our</em> version introduces whitespace changes but <em>their</em>
  version includes a substantial change, <em>their</em> version is used;
</p>
</li>
<li>
<p>
Otherwise, the merge proceeds in the usual way.
</p>
</li>
</ul></div>
</dd>
<dt class="hdlist1">
renormalize
</dt>
<dd>
<p>
        This runs a virtual check-out and check-in of all three stages
        of a file when resolving a three-way merge.  This option is
        meant to be used when merging branches with different clean
        filters or end-of-line normalization rules.  See "Merging
        branches with differing checkin/checkout attributes" in
        <a href="gitattributes.html">gitattributes(5)</a> for details.
</p>
</dd>
<dt class="hdlist1">
no-renormalize
</dt>
<dd>
<p>
        Disables the <tt>renormalize</tt> option.  This overrides the
        <tt>merge.renormalize</tt> configuration variable.
</p>
</dd>
<dt class="hdlist1">
rename-threshold=&lt;n&gt;
</dt>
<dd>
<p>
        Controls the similarity threshold used for rename detection.
        See also <a href="git-diff.html">git-diff(1)</a> <tt>-M</tt>.
</p>
</dd>
<dt class="hdlist1">
subtree[=&lt;path&gt;]
</dt>
<dd>
<p>
        This option is a more advanced form of <em>subtree</em> strategy, where
        the strategy makes a guess on how two trees must be shifted to
        match with each other when merging.  Instead, the specified path
        is prefixed (or stripped from the beginning) to make the shape of
        two trees to match.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
octopus
</dt>
<dd>
<p>
        This resolves cases with more than two heads, but refuses to do
        a complex merge that needs manual resolution.  It is
        primarily meant to be used for bundling topic branch
        heads together.  This is the default merge strategy when
        pulling or merging more than one branch.
</p>
</dd>
<dt class="hdlist1">
ours
</dt>
<dd>
<p>
        This resolves any number of heads, but the resulting tree of the
        merge is always that of the current branch head, effectively
        ignoring all changes from all other branches.  It is meant to
        be used to supersede old development history of side
        branches.  Note that this is different from the -Xours option to
        the <em>recursive</em> merge strategy.
</p>
</dd>
<dt class="hdlist1">
subtree
</dt>
<dd>
<p>
        This is a modified recursive strategy. When merging trees A and
        B, if B corresponds to a subtree of A, B is first adjusted to
        match the tree structure of A, instead of reading the trees at
        the same level. This adjustment is also done to the common
        ancestor tree.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>With the strategies that use 3-way merge (including the default, <em>recursive</em>),
if a change is made on both branches, but later reverted on one of the
branches, that change will be present in the merged result; some people find
this behavior confusing.  It occurs because only the heads and the merge base
are considered when performing a merge, not the individual commits.  The merge
algorithm therefore considers the reverted change as no change at all, and
substitutes the changed version instead.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_default_behaviour">DEFAULT BEHAVIOUR</h2>
<div class="sectionbody">
<div class="paragraph"><p>Often people use <tt>git pull</tt> without giving any parameter.
Traditionally, this has been equivalent to saying <tt>git pull
origin</tt>.  However, when configuration <tt>branch.&lt;name&gt;.remote</tt> is
present while on branch <tt>&lt;name&gt;</tt>, that value is used instead of
<tt>origin</tt>.</p></div>
<div class="paragraph"><p>In order to determine what URL to use to fetch from, the value
of the configuration <tt>remote.&lt;origin&gt;.url</tt> is consulted
and if there is not any such variable, the value on <tt>URL: ` line
in `$GIT_DIR/remotes/&lt;origin&gt;</tt> file is used.</p></div>
<div class="paragraph"><p>In order to determine what remote branches to fetch (and
optionally store in the remote-tracking branches) when the command is
run without any refspec parameters on the command line, values
of the configuration variable <tt>remote.&lt;origin&gt;.fetch</tt> are
consulted, and if there aren&#8217;t any, <tt>$GIT_DIR/remotes/&lt;origin&gt;</tt>
file is consulted and its `Pull: ` lines are used.
In addition to the refspec formats described in the OPTIONS
section, you can have a globbing refspec that looks like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>refs/heads/*:refs/remotes/origin/*</tt></pre>
</div></div>
<div class="paragraph"><p>A globbing refspec must have a non-empty RHS (i.e. must store
what were fetched in remote-tracking branches), and its LHS and RHS
must end with <tt>/*</tt>.  The above specifies that all remote
branches are tracked using remote-tracking branches in
<tt>refs/remotes/origin/</tt> hierarchy under the same name.</p></div>
<div class="paragraph"><p>The rule to determine which remote branch to merge after
fetching is a bit involved, in order not to break backward
compatibility.</p></div>
<div class="paragraph"><p>If explicit refspecs were given on the command
line of <tt>git pull</tt>, they are all merged.</p></div>
<div class="paragraph"><p>When no refspec was given on the command line, then <tt>git pull</tt>
uses the refspec from the configuration or
<tt>$GIT_DIR/remotes/&lt;origin&gt;</tt>.  In such cases, the following
rules apply:</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
If <tt>branch.&lt;name&gt;.merge</tt> configuration for the current
  branch <tt>&lt;name&gt;</tt> exists, that is the name of the branch at the
  remote site that is merged.
</p>
</li>
<li>
<p>
If the refspec is a globbing one, nothing is merged.
</p>
</li>
<li>
<p>
Otherwise the remote branch of the first refspec is merged.
</p>
</li>
</ol></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 for the repository
  you cloned from, then merge one of them into your
  current branch:
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ git pull, git pull origin</tt></pre>
</div></div>
<div class="paragraph"><p>Normally the branch merged in is the HEAD of the remote repository,
but the choice is determined by the branch.&lt;name&gt;.remote and
branch.&lt;name&gt;.merge options; see <a href="git-config.html">git-config(1)</a> for details.</p></div>
</li>
<li>
<p>
Merge into the current branch the remote branch <tt>next</tt>:
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ git pull origin next</tt></pre>
</div></div>
<div class="paragraph"><p>This leaves a copy of <tt>next</tt> temporarily in FETCH_HEAD, but
does not update any remote-tracking branches. Using remote-tracking
branches, the same can be done by invoking fetch and merge:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ git fetch origin
$ git merge origin/next</tt></pre>
</div></div>
</li>
</ul></div>
<div class="paragraph"><p>If you tried a pull which resulted in complex conflicts and
would want to start over, you can recover with <em>git reset</em>.</p></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-fetch.html">git-fetch(1)</a>, <a href="git-merge.html">git-merge(1)</a>, <a href="git-config.html">git-config(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 2014-01-27 13:30:07 PST
</div>
</div>
</body>
</html>
