Written by Sean Behan on Sun Jun 17th 2012
There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton

Typically, we have three main branches at any given time in a project lifecycle.

master, development and staging.
Master is production ready code, development is actively being worked on and staging is pre-flight testing before deploying master.

Features are branched off of development and use underscores to indicate distance from originating branch. For instance

_development_users
__development_users_reset_password
indicates that __development_users_reset_password branched off of _development_users branch.
___development_users_reset_password_experiment
(3 underscores away) would indicate that I was experimenting with a branch off of development users reset password branch.

This provides a nice visual hierarchy when running git branch from the command line. It's also helpful when you have multiple features being worked on by several people and you want to know where these branches are in relation to each other without needing to ask anyone. Here is a more complex example that illustrates the usefulness in using underscores in naming feature branches

  __development_people_importing_csv
* __development_people_importing_xml
  __development_users_password_reset
  _development_people_importing
  _development_users
  development
  master
  staging

Tagged with..
#branching #features #Git #naming things #workflow #Git

Just finishing up brewing up some fresh ground comments...