Kaartic Sivaraam <kaartic.sivaraam@xxxxxxxxx> writes: > 1. "git rebase <upstream> <remote_branch>" does nothing Not limited to "rebase", you do not muck with remote-tracking branch in your local repository, so it would be a bug if the above updated where the remote-tracking branch points at. The form of "git rebase" with one extra argument (i.e. not rebasing the history that leads to the current checkout) is mere shorthand of checking that extra thing out before doing the rebase, i.e. $ git rebase origin/next origin/maint first checks out origin/maint (you'd get on a detached HEAD) and rebase the history leading to the detached HEAD on top of origin/next. If it fast-forwards (and it should if you are talking about 'maint' and 'next' I publish), you'll end up sitting on a detached HEAD that points at origin/next. There is nothing to see here. > 2. It's possible to do "git rebase <upstream> <commit>" Again, that's designed behaviour you can trigger by giving <commit> (not <branch>). Very handy when you do not trust your upstream or yourself's ability to resolve potential conflicts as a trial run before really committing to perform the rebase, e.g. $ git rebase origin master^0