Web lists-archives.com

Re: is "git rebase ... [branch]" equivalent to first "git checkout [branch]"?

"Robert P. J. Day" <rpjday@xxxxxxxxxxxxxx> writes:

>   i *think* i know the answer to this based on man page and reading
> the code, but i just want to verify that i'm not missing any subtlety.
> ...
>   "If <branch> is specified, git rebase will perform an automatic git
> checkout <branch> before doing anything else. Otherwise it remains on
> the current branch."

Yes, but with a caveat ;-)

At least, the original scripted version of "git rebase" both
designed and implemented the final extra "rebase this one, not the
current branch" argument as a pure short-hand for lazy people (like
me, who wanted to have such a feature and made it so) to be exact
equivalent to "checkout before doing anything else".  Which means
that HEAD@{} reflog would record such an event as "checkout that
switched to the branch", and it would have affected the computation
needed if you said "git checkout @{-1}" after the rebase finished.

I do not offhand know if the current verison of "git rebase" that
was reimplemented in C changed the behaviour, though.