Git flow needs to be initialized in order to customize your project setup. Start using git-flow by initializing it inside an existing git repository:
Initialize:
You’ll have to answer a few questions regarding the naming conventions for your branches. It’s recommended to use the default values.
1
git flow init
OR
To use default
1
git flow init -d
Features
Develop new features for upcoming releases. Typically exist in developers repos only.
Start a new feature:
This action creates a new feature branch based on ‘develop’ and switches to it.
1
git flow feature start MYFEATURE
Finish up a feature:
Finish the development of a feature. This action performs the following:
1) Merged MYFEATURE into ‘develop’.
2) Removes the feature branch.
3) Switches back to ‘develop’ branch
1
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.
1
git flow feature publish MYFEATURE
Getting a published feature:
Get a feature published by another user.
1
git flow feature pull origin MYFEATURE
Tracking a origin feature:
You can track a feature on origin by using
1
git flow featuretrack MYFEATURE
Make a Release
Support preparation of a new production release. 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. You can optionally supply a [BASE] commit sha-1 hash to start the release from. The commit must be on the ‘develop’ branch.
1
git flow releasestartRELEASE [BASE]
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:
1
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
1
git flow releasefinishRELEASE
Don’t forget to push your tags with git push --tags
Hotfixes
Hotfixes arise from the necessity to act immediately upon an undesired state of a live production version. 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
1
$ git flow hotfix startVERSION [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