<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.9" />
<title>git-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] [options] [--exec &lt;cmd&gt;] [--onto &lt;newbase&gt;]
        [&lt;upstream&gt; [&lt;branch&gt;]]
<em>git rebase</em> [-i | --interactive] [options] [--exec &lt;cmd&gt;] [--onto &lt;newbase&gt;]
        --root [&lt;branch&gt;]
<em>git rebase</em> --continue | --skip | --abort | --quit | --edit-todo</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.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>
        If set to true enable <code>--autostash</code> option by default.
</p>
</dd>
<dt class="hdlist1">
rebase.missingCommitsCheck
</dt>
<dd>
<p>
        If set to "warn", print warnings about removed commits in
        interactive mode. If set to "error", print the warnings and
        stop the rebase. If set to "ignore", no checking is
        done. "ignore" by default.
</p>
</dd>
<dt class="hdlist1">
rebase.instructionFormat
</dt>
<dd>
<p>
        Custom commit list format to use during an <code>--interactive</code> rebase.
</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>
</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">
-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>
</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 discards all patches from the &lt;branch&gt;,
which makes little sense.</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>
</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>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--force-rebase
</dt>
<dd>
<p>
        Force a rebase even if the current branch is up-to-date and
        the command without <code>--force</code> would return without doing anything.
</p>
<div class="paragraph"><p>You may find this (or --no-ff with an interactive rebase) 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.
        Incompatible with the --interactive option.
</p>
</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>).
        Incompatible with the --interactive option.
</p>
</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>
</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>
</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.
</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>
</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>
</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 a commit whose title begins with
        the same &#8230;, 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>).  Ignores subsequent
        "fixup! " or "squash! " after the first, in case you referred to an
        earlier fixup/squash with <code>git commit --fixup/--squash</code>.
</p>
<div class="paragraph"><p>This option is only valid when the <code>--interactive</code> option is used.</p></div>
<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>
</dd>
<dt class="hdlist1">
--autostash
</dt>
<dt class="hdlist1">
--no-autostash
</dt>
<dd>
<p>
        Automatically create a temporary stash 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">
--no-ff
</dt>
<dd>
<p>
        With --interactive, cherry-pick 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>Without --interactive, this is a synonym for --force-rebase.</p></div>
<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>
</dl></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.  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> <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>
<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>, and
        <code>--ignore-space-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.
        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.
        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>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---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="_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.</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 2016-12-19 16:18:00 PST
</div>
</div>
</body>
</html>
