I read few articles about Git flow best practices. There are many types of git branch (for example: [1], [2]):
+ Master
+ Develop
+ Feature
+ Bug
+ Proof of concept
+ Release
+ Hotfix
What is the difference between types Master
vs. Release
?
What is the difference between types Feature
vs. Develop
?
For the git workflow, as presented in [1]:
feature
: All features / new functions / major refactorings are done in feature
branches, which branch off and are merged back into the develop
branch (usually after some kind of peer review). release
: When enough features have accumulated or the next release time frame comes near, a new release
branch is branched off develop
. It is solely dedicated to testing/bug fixing and any cleanup necessary (e.g. changing some path names, different default values for instrumentation etc.).master
Once the QA is satisfied with the quality, the release
branch is merged into master
(and also back to develop
). This is then what is shipped/used by the customers.hotfix
If a major problem is found after release, the fix is developed in a hotfix
branch, that is branched off the master. Those are the only branches that will ever branch off of master.master
is a merge commit (either from a release
or a hotfix
branch) and represents a new release that is shipped to the customer.Please be aware that this model is mainly meant for a) big software projects that follow b) classic release versioning and c) have a separate QA team. Many popular repositories on GitHub follow a simpler model.