Git branching
See: http://documentup.com/skwp/git-workflows-book#
Commit a temp "bookmark":
git commit -a -m "uncommit me: need to finish stuff in the user model"
git reset --soft HEAD^
git push origin <branch-name>
git checkout -t -b <branch-name> origin/<branch-name>
git checkout master
git merge <branch-name>
git branch -D <branch-name>
git push origin :<branch-name>
or
git push origin --delete <branch-name>
Without deleting anything, using git up to v1.7.12:
git branch --set-upstream branch_name your_new_remote/branch_name
Using git v1.8.0 or later:
git branch branch_name --set-upstream-to your_new_remote/branch_name
git checkout -b <branch-name>