X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=Documentation%2Fgit-rebase.txt;h=08ee4aabaf74c8691a67c974bf3dca1c28cf25bc;hb=HEAD;hp=f037d1280eb629339d82bb1eabf0ede7a1e25708;hpb=2486927d2ec9cc05ed7589540d103382d3751c10;p=git.git diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index f037d128..08ee4aab 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -3,40 +3,55 @@ 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' [--onto ] [] +'git-rebase' --continue | --skip | --abort + DESCRIPTION ----------- -git-rebase applies to (or optionally to ) commits -from that do not appear in . When is not -specified it defaults to the current branch (HEAD). - -When git-rebase is complete, 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. +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`. Another option is to bypass the commit +that caused the merge failure with `git rebase --skip`. To restore the +original and remove the .dotest working files, use the command +`git rebase --abort` instead. + +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: -From this point, the result 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 the following +While, starting from the same point, the result of either of the following commands: git-rebase --onto master~1 master @@ -44,9 +59,33 @@ commands: 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 ------- @@ -58,9 +97,31 @@ OPTIONS :: 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