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 inDevelopstable enough, it can be merged back toMaster. Every release should be tagged (Ex: version 2.1.3).Feature: is where each feature development happens. Should be only branched fromDevelopand commited back toDevelop. After fully merged toDevelop, individualFeaturebranch can be deleted.Hotfix: is where we do bug fix in current release. After finish fixing the bug,Hotfixget merged to bothMasterandDevelop, then it can be deleted.
Feature: prefix withfeature_and then a short descriptive name (Ex:feature_new_mission).Hotfix: prefix withhotfix_and then a short descriptive name (Ex:hotfix_duplicate_mission).
Read more:
found a good write-up on Medium covering this: https://medium.com/goodtogoat/simplified-git-flow-5dc37ba76ea8 ;)