I like some of this, but I worry about rebasing that often after pushing. I understand the benefit of keeping the history cleaner, but it also means if any features <i>are</i> worked on by multiple people it would become impossible to use git's best feature of auto merging things.<p>What do you do when feature work is long standing and worked on by multiple people?
If you incorporate this with good deploy scripts, it becomes rather convenient to test topic branches in different environments. No more dev/stage/prod branches, just branch off master, test and deploy the topic branch to an environment, and merge it back in to master when it's ready to live in production. I believe this is what Github does internally.