Now that we have basically understood what GIT branches, merging, rebasing and remote repositories are we can now talk about the “categorization” of branches.
Lets take Bitbucket as example. On bitbucket we can set a “type” of what our branch should represent when we create a new branch via the web interface:
Feature branches should only contain new software which extend your project.
After creating the branch it is automatically prefixed with feature/<branch-name>
This branch type allows you to group together features, which have already been “finished” in their own branch but have not yet been merged into the master branch and therefore created a “new version” for your software.
Therefore release branches are used to test and polish a certain release before it is public. While this is in progress the development team can focus on creating new features or other bugfixes.
After creating a branch it is automatically prefixed with release/<branch-name>
Bugfix branches should only contain bugfixes for already published or release branches.
After creating a branch it is automatically prefixed with bugfix/<branch-name>
Hotfixe branches are another variant of bugfixes, but here we need to “quickly” add a fix for a problem which has already been published to the production branch.
After creating a branch it is automatically prefixed with hotfix/<branch-name>
Of course you can create branches which don’t fit any of the above “categorization”.
These branches won’t get a prefix.