How to move commits from one branch to another with git rebase onto
You’ve branched off a branch. Unfortunately the original branch is not ready to be merged and you need to promote your branch to a first class citizen, branched off of master.
However, when you raise the pull request for the second branch, you get all the changes from the first! Of course it does - you’ve branched off a branch!
You could wait till the original branch is ready, but alternatively, you can use git rebase
to help you.
This is how your branch setup might look like:
--master
\
branchA
\
branchB
And you want it to look like this:
--master
\
branchB
Here is a useful (and I have also found to be much under-documented) CLI command that you might want to try out:
git rebase --onto master branchA branchB
This moves branchB
from branchA
and onto master
. You could also do this with other branches too - but then that could become really complicated!
You’ll also need to do a git push -f origin branchB
to force the update - and now when you raise a pull request, you will only pick up the changes from branchB
.
When might this be useful? One example might be when you have long lived branches and you need to move subsequent branches from it and onto master for merging.
Do you have any git tips you can share? If you do, let us know your “Git Tip of the Day” via Twitter.