I have branch foo off of master/head. I wanted to ammend the master/head and have these changes picked up on branch foo. I did the following:
git checkout mast
All you needed to do was to tell git where to start the rebase from: You can do this
git rebase --onto master SOMESHA foo
Where SOMESHA is the old master SHA. That is if your tree now looks like this
* aaaaaa - (master)
| * bbbbbb - (foo)
| * cccccc - (old master)
|/
* ffffff
And you do
git rebase --onto master cccccc foo
Your tree will then look like this.
* ffffdffffd - (foo)
|
* aaaaaa - (master)
|
* ffffff
ASIDE: we can use different names for the cccccc
commit if you dont like using SHA values.
> git reflog master
aaaaaa master@{0}: reset: moving to something
cccccc master@{1}: commit: change the froozle
ffffff master@{2}: commit: snarf the froozle
This means we can reference cccccc
as master@{1}
(AKA, the previous location of master)
So we could write this rebase as
git rebase --onto master master@{1} foo
Another description of the commit cccccc
is foo^
(AKA, the parernt commit for foo), so we could also write this as
git rebase --onto master foo^ foo
They all do exactly the same thing, and you may prefer to use different ones in different situations. I usually find the SHA simple to use, as I will often pull up a graph of my repository before performing this kind of operation.