On Thu, Jul 19, 2012 at 1:49 PM, John Scipione <jscipione@xxxxxxxxx> wrote: > Always branch. Keep master is kept in sync with origin. That way you > can use it to diff against. Rebase interactively (git rebase -i) to This. Even if you're going to do the most mundane and useless tweak to source files - it's cheap to "git branch" first, and then just commit your changes to the branch... Then you can swap back and forth between branches and share commits between them. Then you don't have to worry about what uncommitted changes exist in your working directory... "master" is basically just the default branch, so it behaves the same way as the others, and you can keep it in sync with origin/master, and rebase your development branches against it. It's just a very different workflow from svn and other repository-centric designs I think.