<?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-rebase(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-rebase(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-rebase -
   Reapply commits on top of another base tip
</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 rebase</em> [-i | --interactive] [&lt;options&gt;] [--exec &lt;cmd&gt;] [--onto &lt;newbase&gt;]
        [&lt;upstream&gt; [&lt;branch&gt;]]
<em>git rebase</em> [-i | --interactive] [&lt;options&gt;] [--exec &lt;cmd&gt;] [--onto &lt;newbase&gt;]
        --root [&lt;branch&gt;]
<em>git rebase</em> --continue | --skip | --abort | --quit | --edit-todo | --show-current-patch</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>If &lt;branch&gt; is specified, <em>git rebase</em> will perform an automatic
<code>git checkout &lt;branch&gt;</code> before doing anything else.  Otherwise
it remains on the current branch.</p></div>
<div class="paragraph"><p>If &lt;upstream&gt; is not specified, the upstream configured in
branch.&lt;name&gt;.remote and branch.&lt;name&gt;.merge options will be used (see
<a href="git-config.html">git-config(1)</a> for details) and the <code>--fork-point</code> option is
assumed.  If you are currently not on any branch or if the current
branch does not have a configured upstream, the rebase will abort.</p></div>
<div class="paragraph"><p>All changes made by commits in the current branch but that are not
in &lt;upstream&gt; are saved to a temporary area.  This is the same set
of commits that would be shown by <code>git log &lt;upstream&gt;..HEAD</code>; or by
<code>git log 'fork_point'..HEAD</code>, if <code>--fork-point</code> is active (see the
description on <code>--fork-point</code> below); or by <code>git log HEAD</code>, if the
<code>--root</code> option is specified.</p></div>
<div class="paragraph"><p>The current branch is reset to &lt;upstream&gt;, or &lt;newbase&gt; if the
--onto option was supplied.  This has the exact same effect as
<code>git reset --hard &lt;upstream&gt;</code> (or &lt;newbase&gt;).  ORIG_HEAD is set
to point at the tip of the branch before the reset.</p></div>
<div class="paragraph"><p>The commits that were previously saved into the temporary area are
then reapplied to the current branch, one by one, in order. Note that
any commits in HEAD which introduce the same textual changes as a commit
in HEAD..&lt;upstream&gt; are omitted (i.e., a patch already accepted upstream
with a different commit message or timestamp will be skipped).</p></div>
<div class="paragraph"><p>It is possible that a merge failure will prevent this process from being
completely automatic.  You will have to resolve any such merge failure
and run <code>git rebase --continue</code>.  Another option is to bypass the commit
that caused the merge failure with <code>git rebase --skip</code>.  To check out the
original &lt;branch&gt; and remove the .git/rebase-apply working files, use the
command <code>git rebase --abort</code> instead.</p></div>
<div class="paragraph"><p>Assume the following history exists and the current branch is "topic":</p></div>
<div class="listingblock">
<div class="content">
<pre><code>          A---B---C topic
         /
    D---E---F---G master</code></pre>
</div></div>
<div class="paragraph"><p>From this point, the result of either of the following commands:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase master
git rebase master topic</code></pre>
</div></div>
<div class="paragraph"><p>would be:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>                  A'--B'--C' topic
                 /
    D---E---F---G master</code></pre>
</div></div>
<div class="paragraph"><p><strong>NOTE:</strong> The latter form is just a short-hand of <code>git checkout topic</code>
followed by <code>git rebase master</code>. When rebase exits <code>topic</code> will
remain the checked-out branch.</p></div>
<div class="paragraph"><p>If the upstream branch already contains a change you have made (e.g.,
because you mailed a patch which was applied upstream), then that commit
will be skipped. For example, running <code>git rebase master</code> on the
following history (in which <code>A'</code> and <code>A</code> introduce the same set of changes,
but have different committer information):</p></div>
<div class="listingblock">
<div class="content">
<pre><code>          A---B---C topic
         /
    D---E---A'---F master</code></pre>
</div></div>
<div class="paragraph"><p>will result in:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>                   B'---C' topic
                  /
    D---E---A'---F master</code></pre>
</div></div>
<div class="paragraph"><p>Here is how you would transplant a topic branch based on one
branch to another, to pretend that you forked the topic branch
from the latter branch, using <code>rebase --onto</code>.</p></div>
<div class="paragraph"><p>First let&#8217;s assume your <em>topic</em> is based on branch <em>next</em>.
For example, a feature developed in <em>topic</em> depends on some
functionality which is found in <em>next</em>.</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    o---o---o---o---o  master
         \
          o---o---o---o---o  next
                           \
                            o---o---o  topic</code></pre>
</div></div>
<div class="paragraph"><p>We want to make <em>topic</em> forked from branch <em>master</em>; for example,
because the functionality on which <em>topic</em> depends was merged into the
more stable <em>master</em> branch. We want our tree to look like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    o---o---o---o---o  master
        |            \
        |             o'--o'--o'  topic
         \
          o---o---o---o---o  next</code></pre>
</div></div>
<div class="paragraph"><p>We can get this using the following command:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase --onto master next topic</code></pre>
</div></div>
<div class="paragraph"><p>Another example of --onto option is to rebase part of a
branch.  If we have the following situation:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>                            H---I---J topicB
                           /
                  E---F---G  topicA
                 /
    A---B---C---D  master</code></pre>
</div></div>
<div class="paragraph"><p>then the command</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase --onto master topicA topicB</code></pre>
</div></div>
<div class="paragraph"><p>would result in:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>                 H'--I'--J'  topicB
                /
                | E---F---G  topicA
                |/
    A---B---C---D  master</code></pre>
</div></div>
<div class="paragraph"><p>This is useful when topicB does not depend on topicA.</p></div>
<div class="paragraph"><p>A range of commits could also be removed with rebase.  If we have
the following situation:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    E---F---G---H---I---J  topicA</code></pre>
</div></div>
<div class="paragraph"><p>then the command</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase --onto topicA~5 topicA~3 topicA</code></pre>
</div></div>
<div class="paragraph"><p>would result in the removal of commits F and G:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    E---H'---I'---J'  topicA</code></pre>
</div></div>
<div class="paragraph"><p>This is useful if F and G were flawed in some way, or should not be
part of topicA.  Note that the argument to --onto and the &lt;upstream&gt;
parameter can be any valid commit-ish.</p></div>
<div class="paragraph"><p>In case of conflict, <em>git rebase</em> will stop at the first problematic commit
and leave conflict markers in the tree.  You can use <em>git diff</em> to locate
the markers (&lt;&lt;&lt;&lt;&lt;&lt;) and make edits to resolve the conflict.  For each
file you edit, you need to tell Git that the conflict has been resolved,
typically this would be done with</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git add &lt;filename&gt;</code></pre>
</div></div>
<div class="paragraph"><p>After resolving the conflict manually and updating the index with the
desired resolution, you can continue the rebasing process with</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase --continue</code></pre>
</div></div>
<div class="paragraph"><p>Alternatively, you can undo the <em>git rebase</em> with</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase --abort</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration">CONFIGURATION</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
rebase.useBuiltin
</dt>
<dd>
<p>
        Set to <code>false</code> to use the legacy shellscript implementation of
        <a href="git-rebase.html">git-rebase(1)</a>. Is <code>true</code> by default, which means use
        the built-in rewrite of it in C.
</p>
<div class="paragraph"><p>The C rewrite is first included with Git version 2.20. This option
serves an an escape hatch to re-enable the legacy version in case any
bugs are found in the rewrite. This option and the shellscript version
of <a href="git-rebase.html">git-rebase(1)</a> will be removed in some future release.</p></div>
<div class="paragraph"><p>If you find some reason to set this option to <code>false</code> other than
one-off testing you should report the behavior difference as a bug in
git.</p></div>
</dd>
<dt class="hdlist1">
rebase.stat
</dt>
<dd>
<p>
        Whether to show a diffstat of what changed upstream since the last
        rebase. False by default.
</p>
</dd>
<dt class="hdlist1">
rebase.autoSquash
</dt>
<dd>
<p>
        If set to true enable <code>--autosquash</code> option by default.
</p>
</dd>
<dt class="hdlist1">
rebase.autoStash
</dt>
<dd>
<p>
        When set to true, automatically create a temporary stash entry
        before the operation begins, and apply it after the operation
        ends.  This means that you can run rebase on a dirty worktree.
        However, use with care: the final stash application after a
        successful rebase might result in non-trivial conflicts.
        This option can be overridden by the <code>--no-autostash</code> and
        <code>--autostash</code> options of <a href="git-rebase.html">git-rebase(1)</a>.
        Defaults to false.
</p>
</dd>
<dt class="hdlist1">
rebase.missingCommitsCheck
</dt>
<dd>
<p>
        If set to "warn", git rebase -i will print a warning if some
        commits are removed (e.g. a line was deleted), however the
        rebase will still proceed. If set to "error", it will print
        the previous warning and stop the rebase, <em>git rebase
        --edit-todo</em> can then be used to correct the error. If set to
        "ignore", no checking is done.
        To drop a commit without warning or error, use the <code>drop</code>
        command in the todo list.
        Defaults to "ignore".
</p>
</dd>
<dt class="hdlist1">
rebase.instructionFormat
</dt>
<dd>
<p>
        A format string, as specified in <a href="git-log.html">git-log(1)</a>, to be used for the
        todo list during an interactive rebase.  The format will
        automatically have the long commit hash prepended to the format.
</p>
</dd>
<dt class="hdlist1">
rebase.abbreviateCommands
</dt>
<dd>
<p>
        If set to true, <code>git rebase</code> will use abbreviated command names in the
        todo list resulting in something like this:
</p>
<div class="listingblock">
<div class="content">
<pre><code>        p deadbee The oneline of the commit
        p fa1afe1 The oneline of the next commit
        ...</code></pre>
</div></div>
<div class="paragraph"><p>instead of:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        pick deadbee The oneline of the commit
        pick fa1afe1 The oneline of the next commit
        ...</code></pre>
</div></div>
<div class="paragraph"><p>Defaults to false.</p></div>
</dd>
<dt class="hdlist1">
rebase.rescheduleFailedExec
</dt>
<dd>
<p>
        Automatically reschedule <code>exec</code> commands that failed. This only makes
        sense in interactive mode (or when an <code>--exec</code> option was provided).
        This is the same as specifying the <code>--reschedule-failed-exec</code> option.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--onto &lt;newbase&gt;
</dt>
<dd>
<p>
        Starting point at which to create the new commits. If the
        --onto option is not specified, the starting point is
        &lt;upstream&gt;.  May be any valid commit, and not just an
        existing branch name.
</p>
<div class="paragraph"><p>As a special case, you may use "A...B" as a shortcut for the
merge base of A and B if there is exactly one merge base. You can
leave out at most one of A and B, in which case it defaults to HEAD.</p></div>
</dd>
<dt class="hdlist1">
&lt;upstream&gt;
</dt>
<dd>
<p>
        Upstream branch to compare against.  May be any valid commit,
        not just an existing branch name. Defaults to the configured
        upstream for the current branch.
</p>
</dd>
<dt class="hdlist1">
&lt;branch&gt;
</dt>
<dd>
<p>
        Working branch; defaults to HEAD.
</p>
</dd>
<dt class="hdlist1">
--continue
</dt>
<dd>
<p>
        Restart the rebasing process after having resolved a merge conflict.
</p>
</dd>
<dt class="hdlist1">
--abort
</dt>
<dd>
<p>
        Abort the rebase operation and reset HEAD to the original
        branch. If &lt;branch&gt; was provided when the rebase operation was
        started, then HEAD will be reset to &lt;branch&gt;. Otherwise HEAD
        will be reset to where it was when the rebase operation was
        started.
</p>
</dd>
<dt class="hdlist1">
--quit
</dt>
<dd>
<p>
        Abort the rebase operation but HEAD is not reset back to the
        original branch. The index and working tree are also left
        unchanged as a result.
</p>
</dd>
<dt class="hdlist1">
--keep-empty
</dt>
<dd>
<p>
        Keep the commits that do not change anything from its
        parents in the result.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--allow-empty-message
</dt>
<dd>
<p>
        By default, rebasing commits with an empty message will fail.
        This option overrides that behavior, allowing commits with empty
        messages to be rebased.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--skip
</dt>
<dd>
<p>
        Restart the rebasing process by skipping the current patch.
</p>
</dd>
<dt class="hdlist1">
--edit-todo
</dt>
<dd>
<p>
        Edit the todo list during an interactive rebase.
</p>
</dd>
<dt class="hdlist1">
--show-current-patch
</dt>
<dd>
<p>
        Show the current patch in an interactive rebase or when rebase
        is stopped because of conflicts. This is the equivalent of
        <code>git show REBASE_HEAD</code>.
</p>
</dd>
<dt class="hdlist1">
-m
</dt>
<dt class="hdlist1">
--merge
</dt>
<dd>
<p>
        Use merging strategies to rebase.  When the recursive (default) merge
        strategy is used, this allows rebase to be aware of renames on the
        upstream side.
</p>
<div class="paragraph"><p>Note that a rebase merge works by replaying each commit from the working
branch on top of the &lt;upstream&gt; branch.  Because of this, when a merge
conflict happens, the side reported as <em>ours</em> is the so-far rebased
series, starting with &lt;upstream&gt;, and <em>theirs</em> is the working branch.  In
other words, the sides are swapped.</p></div>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</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.
        If there is no <code>-s</code> option <em>git merge-recursive</em> is used
        instead.  This implies --merge.
</p>
<div class="paragraph"><p>Because <em>git rebase</em> replays each commit from the working branch
on top of the &lt;upstream&gt; branch using the given strategy, using
the <em>ours</em> strategy simply empties all patches from the &lt;branch&gt;,
which makes little sense.</p></div>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-X &lt;strategy-option&gt;
</dt>
<dt class="hdlist1">
--strategy-option=&lt;strategy-option&gt;
</dt>
<dd>
<p>
        Pass the &lt;strategy-option&gt; through to the merge strategy.
        This implies <code>--merge</code> and, if no strategy has been
        specified, <code>-s recursive</code>.  Note the reversal of <em>ours</em> and
        <em>theirs</em> as noted above for the <code>-m</code> option.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-S[&lt;keyid&gt;]
</dt>
<dt class="hdlist1">
--gpg-sign[=&lt;keyid&gt;]
</dt>
<dd>
<p>
        GPG-sign commits. The <code>keyid</code> argument is optional and
        defaults to the committer identity; if specified, it must be
        stuck to the option without a space.
</p>
</dd>
<dt class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Be quiet. Implies --no-stat.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Be verbose. Implies --stat.
</p>
</dd>
<dt class="hdlist1">
--stat
</dt>
<dd>
<p>
        Show a diffstat of what changed upstream since the last rebase. The
        diffstat is also controlled by the configuration option rebase.stat.
</p>
</dd>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--no-stat
</dt>
<dd>
<p>
        Do not show a diffstat as part of the rebase process.
</p>
</dd>
<dt class="hdlist1">
--no-verify
</dt>
<dd>
<p>
        This option bypasses the pre-rebase hook.  See also <a href="githooks.html">githooks(5)</a>.
</p>
</dd>
<dt class="hdlist1">
--verify
</dt>
<dd>
<p>
        Allows the pre-rebase hook to run, which is the default.  This option can
        be used to override --no-verify.  See also <a href="githooks.html">githooks(5)</a>.
</p>
</dd>
<dt class="hdlist1">
-C&lt;n&gt;
</dt>
<dd>
<p>
        Ensure at least &lt;n&gt; lines of surrounding context match before
        and after each change.  When fewer lines of surrounding
        context exist they all must match.  By default no context is
        ever ignored.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--no-ff
</dt>
<dt class="hdlist1">
--force-rebase
</dt>
<dt class="hdlist1">
-f
</dt>
<dd>
<p>
        Individually replay all rebased commits instead of fast-forwarding
        over the unchanged ones.  This ensures that the entire history of
        the rebased branch is composed of new commits.
</p>
<div class="paragraph"><p>You may find this helpful after reverting a topic branch merge, as this option
recreates the topic branch with fresh commits so it can be remerged
successfully without needing to "revert the reversion" (see the
<a href="howto/revert-a-faulty-merge.html">revert-a-faulty-merge How-To</a> for
details).</p></div>
</dd>
<dt class="hdlist1">
--fork-point
</dt>
<dt class="hdlist1">
--no-fork-point
</dt>
<dd>
<p>
        Use reflog to find a better common ancestor between &lt;upstream&gt;
        and &lt;branch&gt; when calculating which commits have been
        introduced by &lt;branch&gt;.
</p>
<div class="paragraph"><p>When --fork-point is active, <em>fork_point</em> will be used instead of
&lt;upstream&gt; to calculate the set of commits to rebase, where
<em>fork_point</em> is the result of <code>git merge-base --fork-point &lt;upstream&gt;
&lt;branch&gt;</code> command (see <a href="git-merge-base.html">git-merge-base(1)</a>).  If <em>fork_point</em>
ends up being empty, the &lt;upstream&gt; will be used as a fallback.</p></div>
<div class="paragraph"><p>If either &lt;upstream&gt; or --root is given on the command line, then the
default is <code>--no-fork-point</code>, otherwise the default is <code>--fork-point</code>.</p></div>
</dd>
<dt class="hdlist1">
--ignore-whitespace
</dt>
<dt class="hdlist1">
--whitespace=&lt;option&gt;
</dt>
<dd>
<p>
        These flag are passed to the <em>git apply</em> program
        (see <a href="git-apply.html">git-apply(1)</a>) that applies the patch.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--committer-date-is-author-date
</dt>
<dt class="hdlist1">
--ignore-date
</dt>
<dd>
<p>
        These flags are passed to <em>git am</em> to easily change the dates
        of the rebased commits (see <a href="git-am.html">git-am(1)</a>).
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--signoff
</dt>
<dd>
<p>
        Add a Signed-off-by: trailer to all the rebased commits. Note
        that if <code>--interactive</code> is given then only commits marked to be
        picked, edited or reworded will have the trailer added.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--interactive
</dt>
<dd>
<p>
        Make a list of the commits which are about to be rebased.  Let the
        user edit that list before rebasing.  This mode can also be used to
        split commits (see SPLITTING COMMITS below).
</p>
<div class="paragraph"><p>The commit list format can be changed by setting the configuration option
rebase.instructionFormat.  A customized instruction format will automatically
have the long commit hash prepended to the format.</p></div>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rebase-merges[=(rebase-cousins|no-rebase-cousins)]
</dt>
<dd>
<p>
        By default, a rebase will simply drop merge commits from the todo
        list, and put the rebased commits into a single, linear branch.
        With <code>--rebase-merges</code>, the rebase will instead try to preserve
        the branching structure within the commits that are to be rebased,
        by recreating the merge commits. Any resolved merge conflicts or
        manual amendments in these merge commits will have to be
        resolved/re-applied manually.
</p>
<div class="paragraph"><p>By default, or when <code>no-rebase-cousins</code> was specified, commits which do not
have <code>&lt;upstream&gt;</code> as direct ancestor will keep their original branch point,
i.e. commits that would be excluded by gitlink:git-log[1]'s
<code>--ancestry-path</code> option will keep their original ancestry by default. If
the <code>rebase-cousins</code> mode is turned on, such commits are instead rebased
onto <code>&lt;upstream&gt;</code> (or <code>&lt;onto&gt;</code>, if specified).</p></div>
<div class="paragraph"><p>The <code>--rebase-merges</code> mode is similar in spirit to <code>--preserve-merges</code>, but
in contrast to that option works well in interactive rebases: commits can be
reordered, inserted and dropped at will.</p></div>
<div class="paragraph"><p>It is currently only possible to recreate the merge commits using the
<code>recursive</code> merge strategy; Different merge strategies can be used only via
explicit <code>exec git merge -s &lt;strategy&gt; [...]</code> commands.</p></div>
<div class="paragraph"><p>See also REBASING MERGES and INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--preserve-merges
</dt>
<dd>
<p>
        Recreate merge commits instead of flattening the history by replaying
        commits a merge commit introduces. Merge conflict resolutions or manual
        amendments to merge commits are not preserved.
</p>
<div class="paragraph"><p>This uses the <code>--interactive</code> machinery internally, but combining it
with the <code>--interactive</code> option explicitly is generally not a good
idea unless you know what you are doing (see BUGS below).</p></div>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-x &lt;cmd&gt;
</dt>
<dt class="hdlist1">
--exec &lt;cmd&gt;
</dt>
<dd>
<p>
        Append "exec &lt;cmd&gt;" after each line creating a commit in the
        final history. &lt;cmd&gt; will be interpreted as one or more shell
        commands. Any command that fails will interrupt the rebase,
        with exit code 1.
</p>
<div class="paragraph"><p>You may execute several commands by either using one instance of <code>--exec</code>
with several commands:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase -i --exec "cmd1 &amp;&amp; cmd2 &amp;&amp; ..."</code></pre>
</div></div>
<div class="paragraph"><p>or by giving more than one <code>--exec</code>:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase -i --exec "cmd1" --exec "cmd2" --exec ...</code></pre>
</div></div>
<div class="paragraph"><p>If <code>--autosquash</code> is used, "exec" lines will not be appended for
the intermediate commits, and will only appear at the end of each
squash/fixup series.</p></div>
<div class="paragraph"><p>This uses the <code>--interactive</code> machinery internally, but it can be run
without an explicit <code>--interactive</code>.</p></div>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
-y &lt;cmd&gt;
</dt>
<dd>
<p>
        This is the same as passing <code>--reschedule-failed-exec</code> before
        <code>-x &lt;cmd&gt;</code>, i.e. it appends the specified <code>exec</code> command and
        turns on the mode where failed <code>exec</code> commands are automatically
        rescheduled.
</p>
</dd>
<dt class="hdlist1">
--root
</dt>
<dd>
<p>
        Rebase all commits reachable from &lt;branch&gt;, instead of
        limiting them with an &lt;upstream&gt;.  This allows you to rebase
        the root commit(s) on a branch.  When used with --onto, it
        will skip changes already contained in &lt;newbase&gt; (instead of
        &lt;upstream&gt;) whereas without --onto it will operate on every change.
        When used together with both --onto and --preserve-merges,
        <em>all</em> root commits will be rewritten to have &lt;newbase&gt; as parent
        instead.
</p>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--autosquash
</dt>
<dt class="hdlist1">
--no-autosquash
</dt>
<dd>
<p>
        When the commit log message begins with "squash! &#8230;" (or
        "fixup! &#8230;"), and there is already a commit in the todo list that
        matches the same <code>...</code>, automatically modify the todo list of rebase
        -i so that the commit marked for squashing comes right after the
        commit to be modified, and change the action of the moved commit
        from <code>pick</code> to <code>squash</code> (or <code>fixup</code>).  A commit matches the <code>...</code> if
        the commit subject matches, or if the <code>...</code> refers to the commit&#8217;s
        hash. As a fall-back, partial matches of the commit subject work,
        too.  The recommended way to create fixup/squash commits is by using
        the <code>--fixup</code>/<code>--squash</code> options of <a href="git-commit.html">git-commit(1)</a>.
</p>
<div class="paragraph"><p>If the <code>--autosquash</code> option is enabled by default using the
configuration variable <code>rebase.autoSquash</code>, this option can be
used to override and disable this setting.</p></div>
<div class="paragraph"><p>See also INCOMPATIBLE OPTIONS below.</p></div>
</dd>
<dt class="hdlist1">
--autostash
</dt>
<dt class="hdlist1">
--no-autostash
</dt>
<dd>
<p>
        Automatically create a temporary stash entry before the operation
        begins, and apply it after the operation ends.  This means
        that you can run rebase on a dirty worktree.  However, use
        with care: the final stash application after a successful
        rebase might result in non-trivial conflicts.
</p>
</dd>
<dt class="hdlist1">
--reschedule-failed-exec
</dt>
<dt class="hdlist1">
--no-reschedule-failed-exec
</dt>
<dd>
<p>
        Automatically reschedule <code>exec</code> commands that failed. This only makes
        sense in interactive mode (or when an <code>--exec</code> option was provided).
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_incompatible_options">INCOMPATIBLE OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>The following options:</p></div>
<div class="ulist"><ul>
<li>
<p>
--committer-date-is-author-date
</p>
</li>
<li>
<p>
--ignore-date
</p>
</li>
<li>
<p>
--whitespace
</p>
</li>
<li>
<p>
--ignore-whitespace
</p>
</li>
<li>
<p>
-C
</p>
</li>
</ul></div>
<div class="paragraph"><p>are incompatible with the following options:</p></div>
<div class="ulist"><ul>
<li>
<p>
--merge
</p>
</li>
<li>
<p>
--strategy
</p>
</li>
<li>
<p>
--strategy-option
</p>
</li>
<li>
<p>
--allow-empty-message
</p>
</li>
<li>
<p>
--[no-]autosquash
</p>
</li>
<li>
<p>
--rebase-merges
</p>
</li>
<li>
<p>
--preserve-merges
</p>
</li>
<li>
<p>
--interactive
</p>
</li>
<li>
<p>
--exec
</p>
</li>
<li>
<p>
--keep-empty
</p>
</li>
<li>
<p>
--autosquash
</p>
</li>
<li>
<p>
--edit-todo
</p>
</li>
<li>
<p>
--root when used in combination with --onto
</p>
</li>
</ul></div>
<div class="paragraph"><p>In addition, the following pairs of options are incompatible:</p></div>
<div class="ulist"><ul>
<li>
<p>
--preserve-merges and --interactive
</p>
</li>
<li>
<p>
--preserve-merges and --signoff
</p>
</li>
<li>
<p>
--preserve-merges and --rebase-merges
</p>
</li>
<li>
<p>
--rebase-merges and --strategy
</p>
</li>
<li>
<p>
--rebase-merges and --strategy-option
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_behavioral_differences">BEHAVIORAL DIFFERENCES</h2>
<div class="sectionbody">
<div class="paragraph"><p>There are some subtle differences how the backends behave.</p></div>
<div class="sect2">
<h3 id="_empty_commits">Empty commits</h3>
<div class="paragraph"><p>The am backend drops any "empty" commits, regardless of whether the
commit started empty (had no changes relative to its parent to
start with) or ended empty (all changes were already applied
upstream in other commits).</p></div>
<div class="paragraph"><p>The merge backend does the same.</p></div>
<div class="paragraph"><p>The interactive backend drops commits by default that
started empty and halts if it hits a commit that ended up empty.
The <code>--keep-empty</code> option exists for the interactive backend to allow
it to keep commits that started empty.</p></div>
</div>
<div class="sect2">
<h3 id="_directory_rename_detection">Directory rename detection</h3>
<div class="paragraph"><p>Directory rename heuristics are enabled in the merge and interactive
backends.  Due to the lack of accurate tree information, directory
rename detection is disabled in the am backend.</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_merge_strategies">MERGE STRATEGIES</h2>
<div class="sectionbody">
<div class="paragraph"><p>The merge mechanism (<code>git merge</code> and <code>git pull</code> commands) allows the
backend <em>merge strategies</em> to be chosen with <code>-s</code> option.  Some strategies
can also take their own options, which can be passed by giving <code>-X&lt;option&gt;</code>
arguments to <code>git merge</code> and/or <code>git pull</code>.</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, but currently cannot make use of detected
        copies.  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>; note that, unlike <em>ours</em>, there is
        no <em>theirs</em> merge strategy to confuse this merge option with.
</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> <code>--patience</code>.
</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> <code>--diff-algorithm</code>.
</p>
</dd>
<dt class="hdlist1">
ignore-space-change
</dt>
<dt class="hdlist1">
ignore-all-space
</dt>
<dt class="hdlist1">
ignore-space-at-eol
</dt>
<dt class="hdlist1">
ignore-cr-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> <code>-b</code>, <code>-w</code>,
        <code>--ignore-space-at-eol</code>, and <code>--ignore-cr-at-eol</code>.
</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 <code>renormalize</code> option.  This overrides the
        <code>merge.renormalize</code> configuration variable.
</p>
</dd>
<dt class="hdlist1">
no-renames
</dt>
<dd>
<p>
        Turn off rename detection. This overrides the <code>merge.renames</code>
        configuration variable.
        See also <a href="git-diff.html">git-diff(1)</a> <code>--no-renames</code>.
</p>
</dd>
<dt class="hdlist1">
find-renames[=&lt;n&gt;]
</dt>
<dd>
<p>
        Turn on rename detection, optionally setting the similarity
        threshold.  This is the default. This overrides the
        <em>merge.renames</em> configuration variable.
        See also <a href="git-diff.html">git-diff(1)</a> <code>--find-renames</code>.
</p>
</dd>
<dt class="hdlist1">
rename-threshold=&lt;n&gt;
</dt>
<dd>
<p>
        Deprecated synonym for <code>find-renames=&lt;n&gt;</code>.
</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="_notes">NOTES</h2>
<div class="sectionbody">
<div class="paragraph"><p>You should understand the implications of using <em>git rebase</em> on a
repository that you share.  See also RECOVERING FROM UPSTREAM REBASE
below.</p></div>
<div class="paragraph"><p>When the git-rebase command is run, it will first execute a "pre-rebase"
hook if one exists.  You can use this hook to do sanity checks and
reject the rebase if it isn&#8217;t appropriate.  Please see the template
pre-rebase hook script for an example.</p></div>
<div class="paragraph"><p>Upon completion, &lt;branch&gt; will be the current branch.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_interactive_mode">INTERACTIVE MODE</h2>
<div class="sectionbody">
<div class="paragraph"><p>Rebasing interactively means that you have a chance to edit the commits
which are rebased.  You can reorder the commits, and you can
remove them (weeding out bad or otherwise unwanted patches).</p></div>
<div class="paragraph"><p>The interactive mode is meant for this type of workflow:</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
have a wonderful idea
</p>
</li>
<li>
<p>
hack on the code
</p>
</li>
<li>
<p>
prepare a series for submission
</p>
</li>
<li>
<p>
submit
</p>
</li>
</ol></div>
<div class="paragraph"><p>where point 2. consists of several instances of</p></div>
<div class="paragraph"><p>a) regular use</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
finish something worthy of a commit
</p>
</li>
<li>
<p>
commit
</p>
</li>
</ol></div>
<div class="paragraph"><p>b) independent fixup</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
realize that something does not work
</p>
</li>
<li>
<p>
fix that
</p>
</li>
<li>
<p>
commit it
</p>
</li>
</ol></div>
<div class="paragraph"><p>Sometimes the thing fixed in b.2. cannot be amended to the not-quite
perfect commit it fixes, because that commit is buried deeply in a
patch series.  That is exactly what interactive rebase is for: use it
after plenty of "a"s and "b"s, by rearranging and editing
commits, and squashing multiple commits into one.</p></div>
<div class="paragraph"><p>Start it with the last commit you want to retain as-is:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>git rebase -i &lt;after-this-commit&gt;</code></pre>
</div></div>
<div class="paragraph"><p>An editor will be fired up with all the commits in your current branch
(ignoring merge commits), which come after the given commit.  You can
reorder the commits in this list to your heart&#8217;s content, and you can
remove them.  The list looks more or less like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>pick deadbee The oneline of this commit
pick fa1afe1 The oneline of the next commit
...</code></pre>
</div></div>
<div class="paragraph"><p>The oneline descriptions are purely for your pleasure; <em>git rebase</em> will
not look at them but at the commit names ("deadbee" and "fa1afe1" in this
example), so do not delete or edit the names.</p></div>
<div class="paragraph"><p>By replacing the command "pick" with the command "edit", you can tell
<em>git rebase</em> to stop after applying that commit, so that you can edit
the files and/or the commit message, amend the commit, and continue
rebasing.</p></div>
<div class="paragraph"><p>To interrupt the rebase (just like an "edit" command would do, but without
cherry-picking any commit first), use the "break" command.</p></div>
<div class="paragraph"><p>If you just want to edit the commit message for a commit, replace the
command "pick" with the command "reword".</p></div>
<div class="paragraph"><p>To drop a commit, replace the command "pick" with "drop", or just
delete the matching line.</p></div>
<div class="paragraph"><p>If you want to fold two or more commits into one, replace the command
"pick" for the second and subsequent commits with "squash" or "fixup".
If the commits had different authors, the folded commit will be
attributed to the author of the first commit.  The suggested commit
message for the folded commit is the concatenation of the commit
messages of the first commit and of those with the "squash" command,
but omits the commit messages of commits with the "fixup" command.</p></div>
<div class="paragraph"><p><em>git rebase</em> will stop when "pick" has been replaced with "edit" or
when a command fails due to merge errors. When you are done editing
and/or resolving conflicts you can continue with <code>git rebase --continue</code>.</p></div>
<div class="paragraph"><p>For example, if you want to reorder the last 5 commits, such that what
was HEAD~4 becomes the new HEAD. To achieve that, you would call
<em>git rebase</em> like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>$ git rebase -i HEAD~5</code></pre>
</div></div>
<div class="paragraph"><p>And move the first patch to the end of the list.</p></div>
<div class="paragraph"><p>You might want to preserve merges, if you have a history like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>           X
            \
         A---M---B
        /
---o---O---P---Q</code></pre>
</div></div>
<div class="paragraph"><p>Suppose you want to rebase the side branch starting at "A" to "Q". Make
sure that the current HEAD is "B", and call</p></div>
<div class="listingblock">
<div class="content">
<pre><code>$ git rebase -i -p --onto Q O</code></pre>
</div></div>
<div class="paragraph"><p>Reordering and editing commits usually creates untested intermediate
steps.  You may want to check that your history editing did not break
anything by running a test, or at least recompiling at intermediate
points in history by using the "exec" command (shortcut "x").  You may
do so by creating a todo list like this one:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>pick deadbee Implement feature XXX
fixup f1a5c00 Fix to feature XXX
exec make
pick c0ffeee The oneline of the next commit
edit deadbab The oneline of the commit after
exec cd subdir; make test
...</code></pre>
</div></div>
<div class="paragraph"><p>The interactive rebase will stop when a command fails (i.e. exits with
non-0 status) to give you an opportunity to fix the problem. You can
continue with <code>git rebase --continue</code>.</p></div>
<div class="paragraph"><p>The "exec" command launches the command in a shell (the one specified
in <code>$SHELL</code>, or the default shell if <code>$SHELL</code> is not set), so you can
use shell features (like "cd", "&gt;", ";" &#8230;). The command is run from
the root of the working tree.</p></div>
<div class="listingblock">
<div class="content">
<pre><code>$ git rebase -i --exec "make test"</code></pre>
</div></div>
<div class="paragraph"><p>This command lets you check that intermediate commits are compilable.
The todo list becomes like that:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>pick 5928aea one
exec make test
pick 04d0fda two
exec make test
pick ba46169 three
exec make test
pick f4593f9 four
exec make test</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_splitting_commits">SPLITTING COMMITS</h2>
<div class="sectionbody">
<div class="paragraph"><p>In interactive mode, you can mark commits with the action "edit".  However,
this does not necessarily mean that <em>git rebase</em> expects the result of this
edit to be exactly one commit.  Indeed, you can undo the commit, or you can
add other commits.  This can be used to split a commit into two:</p></div>
<div class="ulist"><ul>
<li>
<p>
Start an interactive rebase with <code>git rebase -i &lt;commit&gt;^</code>, where
  &lt;commit&gt; is the commit you want to split.  In fact, any commit range
  will do, as long as it contains that commit.
</p>
</li>
<li>
<p>
Mark the commit you want to split with the action "edit".
</p>
</li>
<li>
<p>
When it comes to editing that commit, execute <code>git reset HEAD^</code>.  The
  effect is that the HEAD is rewound by one, and the index follows suit.
  However, the working tree stays the same.
</p>
</li>
<li>
<p>
Now add the changes to the index that you want to have in the first
  commit.  You can use <code>git add</code> (possibly interactively) or
  <em>git gui</em> (or both) to do that.
</p>
</li>
<li>
<p>
Commit the now-current index with whatever commit message is appropriate
  now.
</p>
</li>
<li>
<p>
Repeat the last two steps until your working tree is clean.
</p>
</li>
<li>
<p>
Continue the rebase with <code>git rebase --continue</code>.
</p>
</li>
</ul></div>
<div class="paragraph"><p>If you are not absolutely sure that the intermediate revisions are
consistent (they compile, pass the testsuite, etc.) you should use
<em>git stash</em> to stash away the not-yet-committed changes
after each commit, test, and amend the commit if fixes are necessary.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_recovering_from_upstream_rebase">RECOVERING FROM UPSTREAM REBASE</h2>
<div class="sectionbody">
<div class="paragraph"><p>Rebasing (or any other form of rewriting) a branch that others have
based work on is a bad idea: anyone downstream of it is forced to
manually fix their history.  This section explains how to do the fix
from the downstream&#8217;s point of view.  The real fix, however, would be
to avoid rebasing the upstream in the first place.</p></div>
<div class="paragraph"><p>To illustrate, suppose you are in a situation where someone develops a
<em>subsystem</em> branch, and you are working on a <em>topic</em> that is dependent
on this <em>subsystem</em>.  You might end up with a history like the
following:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    o---o---o---o---o---o---o---o  master
         \
          o---o---o---o---o  subsystem
                           \
                            *---*---*  topic</code></pre>
</div></div>
<div class="paragraph"><p>If <em>subsystem</em> is rebased against <em>master</em>, the following happens:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    o---o---o---o---o---o---o---o  master
         \                       \
          o---o---o---o---o       o'--o'--o'--o'--o'  subsystem
                           \
                            *---*---*  topic</code></pre>
</div></div>
<div class="paragraph"><p>If you now continue development as usual, and eventually merge <em>topic</em>
to <em>subsystem</em>, the commits from <em>subsystem</em> will remain duplicated forever:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    o---o---o---o---o---o---o---o  master
         \                       \
          o---o---o---o---o       o'--o'--o'--o'--o'--M  subsystem
                           \                         /
                            *---*---*-..........-*--*  topic</code></pre>
</div></div>
<div class="paragraph"><p>Such duplicates are generally frowned upon because they clutter up
history, making it harder to follow.  To clean things up, you need to
transplant the commits on <em>topic</em> to the new <em>subsystem</em> tip, i.e.,
rebase <em>topic</em>.  This becomes a ripple effect: anyone downstream from
<em>topic</em> is forced to rebase too, and so on!</p></div>
<div class="paragraph"><p>There are two kinds of fixes, discussed in the following subsections:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
Easy case: The changes are literally the same.
</dt>
<dd>
<p>
        This happens if the <em>subsystem</em> rebase was a simple rebase and
        had no conflicts.
</p>
</dd>
<dt class="hdlist1">
Hard case: The changes are not the same.
</dt>
<dd>
<p>
        This happens if the <em>subsystem</em> rebase had conflicts, or used
        <code>--interactive</code> to omit, edit, squash, or fixup commits; or
        if the upstream used one of <code>commit --amend</code>, <code>reset</code>, or
        <code>filter-branch</code>.
</p>
</dd>
</dl></div>
<div class="sect2">
<h3 id="_the_easy_case">The easy case</h3>
<div class="paragraph"><p>Only works if the changes (patch IDs based on the diff contents) on
<em>subsystem</em> are literally the same before and after the rebase
<em>subsystem</em> did.</p></div>
<div class="paragraph"><p>In that case, the fix is easy because <em>git rebase</em> knows to skip
changes that are already present in the new upstream.  So if you say
(assuming you&#8217;re on <em>topic</em>)</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    $ git rebase subsystem</code></pre>
</div></div>
<div class="paragraph"><p>you will end up with the fixed history</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    o---o---o---o---o---o---o---o  master
                                 \
                                  o'--o'--o'--o'--o'  subsystem
                                                   \
                                                    *---*---*  topic</code></pre>
</div></div>
</div>
<div class="sect2">
<h3 id="_the_hard_case">The hard case</h3>
<div class="paragraph"><p>Things get more complicated if the <em>subsystem</em> changes do not exactly
correspond to the ones before the rebase.</p></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">While an "easy case recovery" sometimes appears to be successful
      even in the hard case, it may have unintended consequences.  For
      example, a commit that was removed via <code>git rebase
      --interactive</code> will be <strong>resurrected</strong>!</td>
</tr></table>
</div>
<div class="paragraph"><p>The idea is to manually tell <em>git rebase</em> "where the old <em>subsystem</em>
ended and your <em>topic</em> began", that is, what the old merge-base
between them was.  You will have to find a way to name the last commit
of the old <em>subsystem</em>, for example:</p></div>
<div class="ulist"><ul>
<li>
<p>
With the <em>subsystem</em> reflog: after <em>git fetch</em>, the old tip of
  <em>subsystem</em> is at <code>subsystem@{1}</code>.  Subsequent fetches will
  increase the number.  (See <a href="git-reflog.html">git-reflog(1)</a>.)
</p>
</li>
<li>
<p>
Relative to the tip of <em>topic</em>: knowing that your <em>topic</em> has three
  commits, the old tip of <em>subsystem</em> must be <code>topic~3</code>.
</p>
</li>
</ul></div>
<div class="paragraph"><p>You can then transplant the old <code>subsystem..topic</code> to the new tip by
saying (for the reflog case, and assuming you are on <em>topic</em> already):</p></div>
<div class="listingblock">
<div class="content">
<pre><code>    $ git rebase --onto subsystem subsystem@{1}</code></pre>
</div></div>
<div class="paragraph"><p>The ripple effect of a "hard case" recovery is especially bad:
<em>everyone</em> downstream from <em>topic</em> will now have to perform a "hard
case" recovery too!</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_rebasing_merges">REBASING MERGES</h2>
<div class="sectionbody">
<div class="paragraph"><p>The interactive rebase command was originally designed to handle
individual patch series. As such, it makes sense to exclude merge
commits from the todo list, as the developer may have merged the
then-current <code>master</code> while working on the branch, only to rebase
all the commits onto <code>master</code> eventually (skipping the merge
commits).</p></div>
<div class="paragraph"><p>However, there are legitimate reasons why a developer may want to
recreate merge commits: to keep the branch structure (or "commit
topology") when working on multiple, inter-related branches.</p></div>
<div class="paragraph"><p>In the following example, the developer works on a topic branch that
refactors the way buttons are defined, and on another topic branch
that uses that refactoring to implement a "Report a bug" button. The
output of <code>git log --graph --format=%s -5</code> may look like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>*   Merge branch 'report-a-bug'
|\
| * Add the feedback button
* | Merge branch 'refactor-button'
|\ \
| |/
| * Use the Button class for all buttons
| * Extract a generic Button class from the DownloadButton one</code></pre>
</div></div>
<div class="paragraph"><p>The developer might want to rebase those commits to a newer <code>master</code>
while keeping the branch topology, for example when the first topic
branch is expected to be integrated into <code>master</code> much earlier than the
second one, say, to resolve merge conflicts with changes to the
DownloadButton class that made it into <code>master</code>.</p></div>
<div class="paragraph"><p>This rebase can be performed using the <code>--rebase-merges</code> option.
It will generate a todo list looking like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>label onto

# Branch: refactor-button
reset onto
pick 123456 Extract a generic Button class from the DownloadButton one
pick 654321 Use the Button class for all buttons
label refactor-button

# Branch: report-a-bug
reset refactor-button # Use the Button class for all buttons
pick abcdef Add the feedback button
label report-a-bug

reset onto
merge -C a1b2c3 refactor-button # Merge 'refactor-button'
merge -C 6f5e4d report-a-bug # Merge 'report-a-bug'</code></pre>
</div></div>
<div class="paragraph"><p>In contrast to a regular interactive rebase, there are <code>label</code>, <code>reset</code>
and <code>merge</code> commands in addition to <code>pick</code> ones.</p></div>
<div class="paragraph"><p>The <code>label</code> command associates a label with the current HEAD when that
command is executed. These labels are created as worktree-local refs
(<code>refs/rewritten/&lt;label&gt;</code>) that will be deleted when the rebase
finishes. That way, rebase operations in multiple worktrees linked to
the same repository do not interfere with one another. If the <code>label</code>
command fails, it is rescheduled immediately, with a helpful message how
to proceed.</p></div>
<div class="paragraph"><p>The <code>reset</code> command resets the HEAD, index and worktree to the specified
revision. It is similar to an <code>exec git reset --hard &lt;label&gt;</code>, but
refuses to overwrite untracked files. If the <code>reset</code> command fails, it is
rescheduled immediately, with a helpful message how to edit the todo list
(this typically happens when a <code>reset</code> command was inserted into the todo
list manually and contains a typo).</p></div>
<div class="paragraph"><p>The <code>merge</code> command will merge the specified revision(s) into whatever
is HEAD at that time. With <code>-C &lt;original-commit&gt;</code>, the commit message of
the specified merge commit will be used. When the <code>-C</code> is changed to
a lower-case <code>-c</code>, the message will be opened in an editor after a
successful merge so that the user can edit the message.</p></div>
<div class="paragraph"><p>If a <code>merge</code> command fails for any reason other than merge conflicts (i.e.
when the merge operation did not even start), it is rescheduled immediately.</p></div>
<div class="paragraph"><p>At this time, the <code>merge</code> command will <strong>always</strong> use the <code>recursive</code>
merge strategy for regular merges, and <code>octopus</code> for octopus merges,
with no way to choose a different one. To work around
this, an <code>exec</code> command can be used to call <code>git merge</code> explicitly,
using the fact that the labels are worktree-local refs (the ref
<code>refs/rewritten/onto</code> would correspond to the label <code>onto</code>, for example).</p></div>
<div class="paragraph"><p>Note: the first command (<code>label onto</code>) labels the revision onto which
the commits are rebased; The name <code>onto</code> is just a convention, as a nod
to the <code>--onto</code> option.</p></div>
<div class="paragraph"><p>It is also possible to introduce completely new merge commits from scratch
by adding a command of the form <code>merge &lt;merge-head&gt;</code>. This form will
generate a tentative commit message and always open an editor to let the
user edit it. This can be useful e.g. when a topic branch turns out to
address more than a single concern and wants to be split into two or
even more topic branches. Consider this todo list:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>pick 192837 Switch from GNU Makefiles to CMake
pick 5a6c7e Document the switch to CMake
pick 918273 Fix detection of OpenSSL in CMake
pick afbecd http: add support for TLS v1.3
pick fdbaec Fix detection of cURL in CMake on Windows</code></pre>
</div></div>
<div class="paragraph"><p>The one commit in this list that is not related to CMake may very well
have been motivated by working on fixing all those bugs introduced by
switching to CMake, but it addresses a different concern. To split this
branch into two topic branches, the todo list could be edited like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>label onto

pick afbecd http: add support for TLS v1.3
label tlsv1.3

reset onto
pick 192837 Switch from GNU Makefiles to CMake
pick 918273 Fix detection of OpenSSL in CMake
pick fdbaec Fix detection of cURL in CMake on Windows
pick 5a6c7e Document the switch to CMake
label cmake

reset onto
merge tlsv1.3
merge cmake</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_bugs">BUGS</h2>
<div class="sectionbody">
<div class="paragraph"><p>The todo list presented by <code>--preserve-merges --interactive</code> does not
represent the topology of the revision graph.  Editing commits and
rewording their commit messages should work fine, but attempts to
reorder commits tend to produce counterintuitive results. Use
<code>--rebase-merges</code> in such scenarios instead.</p></div>
<div class="paragraph"><p>For example, an attempt to rearrange</p></div>
<div class="listingblock">
<div class="content">
<pre><code>1 --- 2 --- 3 --- 4 --- 5</code></pre>
</div></div>
<div class="paragraph"><p>to</p></div>
<div class="listingblock">
<div class="content">
<pre><code>1 --- 2 --- 4 --- 3 --- 5</code></pre>
</div></div>
<div class="paragraph"><p>by moving the "pick 4" line will result in the following history:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>        3
       /
1 --- 2 --- 4 --- 5</code></pre>
</div></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-06 23:17:45 PST
</div>
</div>
</body>
</html>
