问题
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
?
[1] http://nvie.com/posts/a-successful-git-branching-model/
[2] http://developer.exoplatform.org/#id-branching-model
回答1:
For the git workflow, as presented in [1]:
feature
: All features / new functions / major refactorings are done infeature
branches, which branch off of and are merged back into thedevelop
branch (usually after some kind of peer review).release
: When enough features have accumulated or the next release time frame comes near, a newrelease
branch is branched off ofdevelop
, which 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, therelease
branch is merged intomaster
(and also back todevelop
). This is then what is shipped/used by the customers.hotfix
If a major problem is found after release, the fix is developed in ahotfix
branch, that is branched off of the master. Those are the only branches that will ever branch off of master.- Note: Any commit in
master
is a merge commit (either from arelease
or ahotfix
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.
回答2:
The difference between master
and release
is that the master
branch is what your customers/users are using. It is the branch actually installed or sold.
In a lot of teams the master
branch (usually also named master
) is also the release
branch. But this is not always the case. In larger companies or companies with a separate test or QA department/team the master branch is the branch that's being sold to customers but the release branch is the one being tested. Note that for some projects running a full test may take a week or more so it makes sense to have a branch that testers can test but is stable (developers don't constantly push updates).
The difference between feature
and develop
comes from the same reasoning. The develop
branch (usually named develop
or dev
) is the stable developer's branch. In traditional source control software the develop branch is your repo server. It is the branch all developers have in common. It is the branch you start development with.
A feature branch on the other hand is your own personal branch. During development of a feature/story/module you will of course modify the code a lot. And to take advantage of git you should commit early and commit often. But the code you're working on is by definition unstable (not finalized) and may cause breaking changes to other developers. So you develop on your own branch (branched off from develop) until your code is ready to be merged back to develop.
来源:https://stackoverflow.com/questions/39585900/what-is-the-difference-between-develop-vs-feature-branch-type