===== 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.