===== Overview =====
How to move a pile of uncommitted changes from ''master'' to ''topic'', because they should have been on the ''topic'' branch in the first place.
===== The steps =====
While still on ''master'', tag the current HEAD for reference later:
$ git tag backup
Commit all your work to ''master'' using reasonable commits for later:
$ git add ...
$ git commit ...
$ git add ...
$ git commit ...
Switch to the other branch, which should work fine:
$ git checkout topic
Cherry-pick what you want from ''master'', or just all of it, dealing with merge conflicts as they arise:
$ git cherry-pick backup..master
Switch back to ''master'', wipe out those redundant commits, and delete the now superfluous tag:
$ git checkout master
$ git reset --hard backup
$ git tag -d backup
Note how you can reorganize the commits from ''master'' as you are cherry-picking them.