# Simplified Git-flow
```
RELEASE TAG
o----------------------------o-----------------o------------o------> MASTER
\ / \ \----------/ HOTFIX
\ / \ \
\----------------------/ \--------------------o-----o------> DEVELOP
\ /
\----------------/ FEATURE
```
- `Master`: should contain the most stable, production ready code. In other words, we can pull from master and build and deploy at anytime.
- `Develop`: is where most of the development happen. After code in `Develop` stable enough, it can be merged back to `Master`. Every release should be tagged (Ex: version 2.1.3).
- `Feature`: is where each feature development happens. Should be only branched from `Develop` and commited back to `Develop`. After fully merged to `Develop`, individual `Feature` branch can be deleted.
- `Hotfix`: is where we do bug fix in current release. After finish fixing the bug, `Hotfix` get merged to both `Master` and `Develop`, then it can be deleted.
#### Naming convention:
- `Feature`: prefix with `feature_` and then a short descriptive name (Ex: `feature_new_mission`).
- `Hotfix`: prefix with `hotfix_` and then a short descriptive name (Ex: `hotfix_duplicate_mission`).
Read more:
[StackOverflow](https://stackoverflow.com/questions/18188492/what-are-the-pros-and-cons-of-git-flow-vs-github-flow), [Gist](https://gist.github.com/jbenet/ee6c9ac48068889b0912)