So, You’ve developed this great new feature and you’re ready to submit the code for inclusion into the project. You hit “pull request,” and patiently wait for feedback.
Then it happens.
Someone says “Can you merge this into [insert parent branch name here’]. You get a sinking feeling in your stomach, and say “oh no! now I have to make all of my changes over again from that branch.
Never fear, this is what rebasing is for!
In this case, you need to tell git to take the commits you’ve added, and play them back against a different branch. The process goes something like this:
git rebase --onto master myNewFeatureBranch~1 myNewFeatureBranch
If all goes well, you’ll end up in the same branch, all of your changes will be intact, and the result of (diff to master) will be only your changes!!!
Also Collapse commits: http://stackoverflow.com/questions/6884022/collapsing-a-group-of-commits-into-one-on-git