..
.TH "GIT-REBASE" 1 "" "" ""
.SH NAME
-git-rebase \- Rebase local commits to new upstream head
+git-rebase \- Rebase local commits to a new head
.SH "SYNOPSIS"
\fIgit\-rebase\fR [\-\-onto <newbase>] <upstream> [<branch>]
+
+\fIgit\-rebase\fR \-\-continue
+
+
+\fIgit\-rebase\fR \-\-abort
+
.SH "DESCRIPTION"
-git\-rebase applies to <upstream> (or optionally to <newbase>) commits from <branch> that do not appear in <upstream>\&. When <branch> is not specified it defaults to the current branch (HEAD)\&.
+git\-rebase replaces <branch> with a new branch of the same name\&. When the \-\-onto option is provided the new branch starts out with a HEAD equal to <newbase>, otherwise it is equal to <upstream>\&. It then attempts to create a new commit for each commit from the original <branch> that does not exist in the <upstream> branch\&.
-When git\-rebase is complete, <branch> will be updated to point to the newly created line of commit objects, so the previous line will not be accessible unless there are other references to it already\&.
+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 git rebase \-\-continue\&. If you can not resolve the merge failure, running git rebase \-\-abort will restore the original <branch> and remove the working files found in the \&.dotest directory\&.
+
+
+Note that if <branch> is not specified on the command line, the currently checked out branch is used\&.
Assume the following history exists and the current branch is "topic":
.nf
- A\-\-\-B\-\-\-C topic
- /
-D\-\-\-E\-\-\-F\-\-\-G master
+ A\-\-\-B\-\-\-C topic
+ /
+ D\-\-\-E\-\-\-F\-\-\-G master
.fi
would be:
.nf
- A'\-\-B'\-\-C' topic
- /
-D\-\-\-E\-\-\-F\-\-\-G master
+ A'\-\-B'\-\-C' topic
+ /
+ D\-\-\-E\-\-\-F\-\-\-G master
.fi
would be:
.nf
- A'\-\-B'\-\-C' topic
- /
-D\-\-\-E\-\-\-F\-\-\-G master
+ A'\-\-B'\-\-C' topic
+ /
+ D\-\-\-E\-\-\-F\-\-\-G master
+.fi
+
+
+In case of conflict, git\-rebase will stop at the first problematic commit and leave conflict markers in the tree\&. You can use git diff to locate the markers (<<<<<<) 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
+
+.nf
+git update\-index <filename>
.fi
-In case of conflict, git\-rebase will stop at the first problematic commit and leave conflict markers in the tree\&. After resolving the conflict manually and updating the index with the desired resolution, you can continue the rebasing process with
+After resolving the conflict manually and updating the index with the desired resolution, you can continue the rebasing process with
.nf
-git am \-\-resolved \-\-3way
+git rebase \-\-continue
.fi
Alternatively, you can undo the git\-rebase with
.nf
-git reset \-\-hard ORIG_HEAD
-rm \-r \&.dotest
+git rebase \-\-abort
.fi
.SH "OPTIONS"
<branch>
Working branch; defaults to HEAD\&.
+.TP
+\-\-continue
+Restart the rebasing process after having resolved a merge conflict\&.
+
+.TP
+\-\-abort
+Restore the original branch and abort the rebase operation\&.
+
+.SH "NOTES"
+
+
+When you rebase a branch, you are changing its history in a way that will cause problems for anyone who already has a copy of the branch in their repository and tries to pull updates from you\&. You should understand the implications of using \fIgit rebase\fR on a repository that you share\&.
+
+
+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't appropriate\&. Please see the template pre\-rebase hook script for an example\&.
+
+
+You must be in the top directory of your project to start (or continue) a rebase\&. Upon completion, <branch> will be the current branch\&.
+
.SH "AUTHOR"