How to fix committing to the wrong Git branch?

Question

I just made a perfectly good commit to the wrong branch. How do I undo the last commit in my master branch and then take those same changes and get them into my upgrade branch?

Answer

If you haven't yet pushed your changes, you can also do a soft reset:

git reset --soft HEAD^

This will revert the commit, but put the committed changes back into your index. Assuming the branches are relatively up-to-date with regard to each other, git will let you do a checkout into the other branch, whereupon you can simply commit:

git checkout branch
git commit -c ORIG_HEAD

The -c ORIG_HEAD part is useful to not type commit message again.

How can I merge two commits into one if I already started rebase?

What's the difference between 'git reset' and 'git checkout'?