A simple way to do it is: create and checkout branch tmp at branch_a (git branch tmp branch_a && git checkout tmp) git reset --soft branch_b git commit that commit must have all the diff