X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=Documentation%2Fgit-rebase.txt;h=1b482abecdc2e953db1f29cb3c531f665ea8011c;hb=dd097fcd4d3d6692ec19c0caf4686aa8849301a2;hp=16c158f439c7299b92c4419d8a6233ef20fed914;hpb=302ebfe52192fff9a2c1c612dff22325fd073acc;p=git.git diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 16c158f4..1b482abe 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -3,24 +3,126 @@ git-rebase(1) NAME ---- -git-rebase - Rebase local commits to new upstream head. +git-rebase - Rebase local commits to a new head SYNOPSIS -------- -'git-rebase' [] +'git-rebase' [--onto ] [] + +'git-rebase' --continue + +'git-rebase' --abort DESCRIPTION ----------- -Rebases local commits to the new head of the upstream tree. +git-rebase replaces with a new branch of the same name. When +the --onto option is provided the new branch starts out with a HEAD equal +to , otherwise it is equal to . It then attempts to +create a new commit for each commit from the original that does +not exist in the branch. + +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 +and remove the working files found in the .dotest directory. + +Note that if 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": + +------------ + A---B---C topic + / + D---E---F---G master +------------ + +From this point, the result of either of the following commands: + + + git-rebase master + git-rebase master topic + +would be: + +------------ + A'--B'--C' topic + / + D---E---F---G master +------------ + +While, starting from the same point, the result of either of the following +commands: + + git-rebase --onto master~1 master + git-rebase --onto master~1 master topic + +would be: + +------------ + A'--B'--C' topic + / + D---E---F---G master +------------ + +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 + + + git update-index + + +After resolving the conflict manually and updating the index with the +desired resolution, you can continue the rebasing process with + + + git rebase --continue + + +Alternatively, you can undo the git-rebase with + + + git rebase --abort OPTIONS ------- +:: + Starting point at which to create the new commits. If the + --onto option is not specified, the starting point is + . + :: Upstream branch to compare against. -:: +:: Working branch; defaults to HEAD. +--continue:: + Restart the rebasing process after having resolved a merge conflict. + +--abort:: + Restore the original branch and abort the rebase operation. + +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 'git rebase' 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, will be the current branch. + Author ------ Written by Junio C Hamano