<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
<style type="text/css">\r
/* Debug borders */\r
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
<h2>NAME</h2>\r
<div class="sectionbody">\r
<p>git-rebase -\r
- Rebase local commits to new upstream head.\r
+ Rebase local commits to a new head\r
</p>\r
</div>\r
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-rebase</em> <upstream> [<head>]</p>\r
+<p><em>git-rebase</em> [--onto <newbase>] <upstream> [<branch>]</p>\r
+<p><em>git-rebase</em> --continue</p>\r
+<p><em>git-rebase</em> --abort</p>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
-<p>Rebases local commits to the new head of the upstream tree.</p>\r
+<p>git-rebase replaces <branch> with a new branch of the same name. When\r
+the --onto option is provided the new branch starts out with a HEAD equal\r
+to <newbase>, otherwise it is equal to <upstream>. It then attempts to\r
+create a new commit for each commit from the original <branch> that does\r
+not exist in the <upstream> branch.</p>\r
+<p>It is possible that a merge failure will prevent this process from being\r
+completely automatic. You will have to resolve any such merge failure\r
+and run <tt>git rebase --continue</tt>. If you can not resolve the merge\r
+failure, running <tt>git rebase --abort</tt> will restore the original <branch>\r
+and remove the working files found in the .dotest directory.</p>\r
+<p>Note that if <branch> is not specified on the command line, the currently\r
+checked out branch is used.</p>\r
+<p>Assume the following history exists and the current branch is "topic":</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt> A---B---C topic\r
+ /\r
+ D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>From this point, the result of either of the following commands:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-rebase master\r
+git-rebase master topic</tt></pre>\r
+</div></div>\r
+<p>would be:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt> A'--B'--C' topic\r
+ /\r
+ D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>While, starting from the same point, the result of either of the following\r
+commands:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-rebase --onto master~1 master\r
+git-rebase --onto master~1 master topic</tt></pre>\r
+</div></div>\r
+<p>would be:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt> A'--B'--C' topic\r
+ /\r
+ D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>In case of conflict, git-rebase will stop at the first problematic commit\r
+and leave conflict markers in the tree. You can use git diff to locate\r
+the markers (<<<<<<) and make edits to resolve the conflict. For each\r
+file you edit, you need to tell git that the conflict has been resolved,\r
+typically this would be done with</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git update-index <filename></tt></pre>\r
+</div></div>\r
+<p>After resolving the conflict manually and updating the index with the\r
+desired resolution, you can continue the rebasing process with</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git rebase --continue</tt></pre>\r
+</div></div>\r
+<p>Alternatively, you can undo the git-rebase with</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git rebase --abort</tt></pre>\r
+</div></div>\r
</div>\r
<h2>OPTIONS</h2>\r
<div class="sectionbody">\r
<dl>\r
<dt>\r
+<newbase>\r
+</dt>\r
+<dd>\r
+<p>\r
+ Starting point at which to create the new commits. If the\r
+ --onto option is not specified, the starting point is\r
+ <upstream>.\r
+</p>\r
+</dd>\r
+<dt>\r
<upstream>\r
</dt>\r
<dd>\r
</p>\r
</dd>\r
<dt>\r
-<head>\r
+<branch>\r
</dt>\r
<dd>\r
<p>\r
Working branch; defaults to HEAD.\r
</p>\r
</dd>\r
+<dt>\r
+--continue\r
+</dt>\r
+<dd>\r
+<p>\r
+ Restart the rebasing process after having resolved a merge conflict.\r
+</p>\r
+</dd>\r
+<dt>\r
+--abort\r
+</dt>\r
+<dd>\r
+<p>\r
+ Restore the original branch and abort the rebase operation.\r
+</p>\r
+</dd>\r
</dl>\r
</div>\r
+<h2>NOTES</h2>\r
+<div class="sectionbody">\r
+<p>When you rebase a branch, you are changing its history in a way that\r
+will cause problems for anyone who already has a copy of the branch\r
+in their repository and tries to pull updates from you. You should\r
+understand the implications of using <em>git rebase</em> on a repository that\r
+you share.</p>\r
+<p>When the git rebase command is run, it will first execute a "pre-rebase"\r
+hook if one exists. You can use this hook to do sanity checks and\r
+reject the rebase if it isn't appropriate. Please see the template\r
+pre-rebase hook script for an example.</p>\r
+<p>You must be in the top directory of your project to start (or continue)\r
+a rebase. Upon completion, <branch> will be the current branch.</p>\r
+</div>\r
<h2>Author</h2>\r
<div class="sectionbody">\r
<p>Written by Junio C Hamano <junkio@cox.net></p>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:32 PDT\r
+Last updated 02-May-2006 07:27:57 UTC\r
</div>\r
</div>\r
</body>\r