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.