Hi there!
I wanna talk about git power supplement that named git flow!
git-flow are a set of git extensions to provide high-level repository operations for Vincent Driessen's branching model.
in this post I wanna shows the basic usage and effect of git-flow operations
Setup
important! before using git flow you need a working git installation
Setup in mac OS
$ brew install git-flow-avh
Setup in macports
$ port install git-flow-avh
Setup in linux
$ apt-get install git-flow
Setup in windows
$ wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
Getting started
Git flow needs to be initialized in order to customize your project setup.
Initialize
Start using git-flow by initializing it inside an existing git repository:
git flow init
You'll have to answer a few questions regarding the naming conventions for your branches.
It's recommended to use the default values.
Features
@@Develop new features for upcoming releases@@
@@Typically exist in developers repos only@@
Start a new feature
Development of new features starting from the 'develop' branch.
Start developing a new feature with
git flow feature start MYFEATURE
This action creates a new feature branch based on 'develop' and switches to it
Finish up a feature
Finish the development of a feature. This action performs the following;
- Merges MYFEATURE into 'develop'
- Removes the feature branch
- Switches back to 'develop' branch
git flow feature finish MYFEATURE
Publish a feature
Are you developing a feature in collaboration?
Publish a feature to the remote server so it can be used by other users.
git flow feature publish MYFEATURE
Getting a published feature
Get a feature published by another user.
git flow feature pull origin MYFEATURE
You can track a feature on origin by using
git flow feature track MYFEATURE
Make a release
1.Support preparation of a new production release
2.Allow for minor bug fixes and preparing meta-data for a release
Start a release
To start a release, use the git flow release command. It creates a release branch created from the 'develop' branch.
git flow release start RELEASE [BASE]
You can optionally supply a [BASE]
commit sha-1 hash to start the release from. The commit must be on the 'develop' branch.
It's wise to publish the release branch after creating it to allow release commits by other developers. Do it similar to feature publishing with the command:
git flow release publish RELEASE
(You can track a remote release with the
git flow release track RELEASE
command)
Finish up a release
Finishing a release is one of the big steps in git branching. It performs several actions:
1.Merges the release branch back into 'master'
2.Tags the release with its name
3.Back-merges the release into 'develop'
4.Removes the release branch
git flow release finish RELEASE
Don't forget to push your tags with git push origin --tags
Hotfixes
1.Hotfixes arise from the necessity to act immediately upon an undesired state of a live production version
2.May be branched off from the corresponding tag on the master branch that marks the production version.
git flow hotfix start
Like the other git flow commands, a hotfix is started with
git flow hotfix start VERSION [BASENAME]
The version argument hereby marks the new hotfix release name. Optionally you can specify a basename to start from.
Finish a hotfix
By finishing a hotfix it gets merged back into develop and master. Additionally, the master merge is tagged with the hotfix version.
git flow hotfix finish VERSION
Commands
Be happy!
Top comments (1)
I've followed this development workflow in the past. It's more suited for certain types of projects than others.
More recently, I've started following more of a trunk-based development workflow, which is somewhat similar to GitHub Flow (not to be confused with Git Flow discussed in this article), and I can't imagine going back to Git Flow.