About
git-flow are a set of git extensions to provide high-level repository operations for Vincent Driessen's branching model. more
★ ★ ★
This cheatsheet shows the basic usage and effect of git-flow operations
★ ★ ★
Basic tips
- Git flow provides excellent command line help and output. Read it carefully to see what's happening...
- The OSX Client Sourcetree is an excellent git gui and provides git-flow support
★ ★ ★
Setup
OSX
$ brew install git-flow
Linux
$ apt-get install git-flow
Windows (Cygwin)
$ wget -q -O - --no-check-certificate
https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash
You need a working git installation as prerequirement.
For detailed instructions please visit the git flow
wiki.
Getting started
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
- Merged 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 and track remote changes.
git-flow feature pull 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.
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.
Finish up a release
Finishing a release is one of the big steps in git branching. It performs several actions:
- Merges the release branch back into 'master'
- Tags the release with it's name
- Back-merges the release into 'develop'
- Removes the release branch
git flow release finish RELEASE
It's wise to publish a finished release after finishing it. 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)
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
git flow hotfix start RELEASE
The release argument hereby marks the faulty production release
Finish a hotfix
TODO
Backlog
- Not all available commands are covered here, only the most important ones
- You can still use git and all its commands normally as you know them, git flow is only a tooling collection
- The 'support' feature is still beta, using it is not advised