DEV Community

Cover image for Do you know about git flow? all in one post!
mohammad hassani
mohammad hassani

Posted on • Updated on

Do you know about git flow? all in one post!

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
Enter fullscreen mode Exit fullscreen mode

Setup in macports

$ port install git-flow-avh
Enter fullscreen mode Exit fullscreen mode

Setup in linux

$ apt-get install git-flow
Enter fullscreen mode Exit fullscreen mode

Setup in windows

$ wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

You'll have to answer a few questions regarding the naming conventions for your branches.
It's recommended to use the default values.
Alt Text

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
Enter fullscreen mode Exit fullscreen mode

This action creates a new feature branch based on 'develop' and switches to it
Alt Text

Finish up a feature

Finish the development of a feature. This action performs the following;

  1. Merges MYFEATURE into 'develop'
  2. Removes the feature branch
  3. Switches back to 'develop' branch
git flow feature finish MYFEATURE
Enter fullscreen mode Exit fullscreen mode

Alt Text

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
Enter fullscreen mode Exit fullscreen mode

Alt Text

Getting a published feature

Get a feature published by another user.

git flow feature pull origin MYFEATURE
Enter fullscreen mode Exit fullscreen mode

You can track a feature on origin by using

git flow feature track MYFEATURE
Enter fullscreen mode Exit fullscreen mode

Alt Text

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]
Enter fullscreen mode Exit fullscreen mode

You can optionally supply a [BASE] commit sha-1 hash to start the release from. The commit must be on the 'develop' branch.
Alt Text
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
Enter fullscreen mode Exit fullscreen mode

(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
Alt Text

git flow release finish RELEASE
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

The version argument hereby marks the new hotfix release name. Optionally you can specify a basename to start from.
Alt Text

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
Enter fullscreen mode Exit fullscreen mode

Alt Text

Commands

Alt Text

Be happy!

buy me a coffee

Top comments (1)

Collapse
 
pbnj profile image
Peter Benjamin (they/them)

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.