How do you rebase the current branch's changes on top of changes being merged in?
Okay. If I'm on a branch (say working
), and I want to merge in the changes from another branch (say master
), then I run the command git-merge master
while on the working
branch, and the changes get merged in without rebasing the history at all. If I run git-rebase master
, then the changes in master
are rebased to be put on the top of my working
branch. But what if I want to merge in the changes from master
but rebase my changes in working
to be on top? How do I do that? Can it be done?
I could run git-rebase working
on my master
branch to put my changes on top in the master
branch, but I'd like to be able to do that in my working
branch, and I have no idea how. The closest that I can think of doing is creating a new branch from master
and then rebase working
's changes on top of that, but then I'd have a new branch instead of altering the working
branch.
Solution 1:
You've got what rebase
does backwards. git rebase master
does what you're asking for — takes the changes on the current branch (since its divergence from master) and replays them on top of master
, then sets the head of the current branch to be the head of that new history. It doesn't replay the changes from master
on top of the current branch.
Solution 2:
Another way to look at it is to consider git rebase master
as:
Rebase the current branch on top of
master
Here , 'master
' is the upstream branch, and that explain why, during a rebase, ours
and theirs
are reversed.