Git branching can be an effective tool to compartmentalize feature development and maintain multiple work streams while evolving a project. Here is a screencast that I put together to demo the way we introduce new features into projects here at Hashrocket. it is simplified somewhat, but the core principle remains:

1) The master branch is always clean and deployable
2) Develop features on feature branches
3) Bring in changes from other streams and run integration tests on feature branches to guard against regression
4) Merge code back to master and deploy

j vimeo.com/44935416

Loading more stuff…

Hmm…it looks like things are taking a while to load. Try again?

Loading videos…