Pierre-Luc Loyer <Pierre-Luc.Loyer@xxxxxxxx> writes: > From the documentation it says that <branch> (which is HEAD) will be checked out before doing anything and that upon completion, <branch> will be the current branch. However, this doesn't seem to happen. In fact, it seems more like the following is happening during the rebase: > 1) detach HEAD > 2) rebase > 3) reattach to <branch> You do not have to say "HEAD" for "<branch>", if you are rebasing the current branch. Either leave it unsaid, or name the branch. Passing "HEAD" (or any of its variants that names the exact commit at the tip of the current branch, without using the name of the current branch, e.g. "master^0") as the "branch to rebase" is an advanced technique to use when you want to avoid messing with the branch itself. It is deliberate that the HEAD is left detached. You'd (once you learn Git sufficently and got comfortable with working on a detached HEAD, that is) often find yourself doing things like this: 1. rebase temporarily on detached HEAD $ git rebase -i HEAD~2 HEAD ;# amend the tip two 2. double check the result and convince yourself that it is better than the original $ git diff master HEAD $ git log master.. >updated $ git log -2 master >original $ diff -u original updated 3-a. once satisfied, update the branch $ git checkout -B master 3-b. or abandon if the result is undesirable. $ git checkout master -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html