Article

Git Development Workflows: Git Flow vs. GitHub Flow

Git Development Workflows: Git Flow vs. GitHub Flow

One of our development principles is that everything we do should be Repeatable and Reviewable.

The tool we use to accomplish this is the Git version control system. Git provides repeatability and reviewability, but it still allows the user to establish what their workflow looks like.

Git Flow: A Comprehensive Approach to Version Control

One well-known workflow methodology is called Git Flow, as described by Vincent Driessen. Git Flow describes how feature branches, release branches, mainline or development branches, and hotfixes are interrelated. This approach works very well for packaged software that is downloaded by users, such as libraries and desktop applications.

For many websites, however, Git Flow is overkill. Sometimes there is not a big enough difference between your mainline development and release branches to make the distinction worthwhile. Alternatively, your workflow for hotfixes and feature branches might be identical.

GitHub Flow: A Simplified Alternative

GitHub proposes an alternate workflow called GitHub Flow. GitHub Flow has some of the same elements as Git Flow, such as feature branches. But unlike Git Flow, GitHub Flow combines the mainline and release branches into a “master” and treats hotfixes just like feature branches.

This simplified model is better suited to continuous delivery models where changes can be quickly made and easily deployed, sometimes multiple times a day.

When is Git Flow Worth the Additional Complexity?

We’ve found that the additional complexity inherent to Git Flow is necessary in certain situations, such as:

  • When you have discrete named or numbered releases
  • When you need to freeze development on a release candidate while still continuing to develop and integrate features for a subsequent release. This may happen, for example, when a release candidate needs to be reviewed, accepted with bug fixes, or approved before being released. Development continues on a subsequent release simultaneously
  • When multiple versions of the software need to be supported and maintained independently

If any of these scenarios apply, then you might benefit from Git Flow. If they don’t, you might be better served by GitHub Flow.

Conclusion

We use GitHub Flow for most of our projects. It provides almost all the functionality that Git Flow does, but is scaled back for a more adaptable workflow with less overhead.

Some of our more complex web applications call for a more complex workflow. For those project, we use Git Flow.

What workflow do you like to use for your development projects? Let us know in the comments section, or give us a call if you’d like to discuss the best approach for your project!

How-We-Develop
Related White Paper

How We Develop

Download
Steve Hulet

Steve Hulet

CTO

Steve is the Co-Founder and CTO at Fresh. A former Software Engineer at Amazon with over 12 years of web development experience, Steve provides technical, architectural, and engineering oversight to projects. Steve is responsible for all technology reviews related to websites. His specialities include programming languages such as C, C++, Java, Python, and PHP, and technology software including Eclipse, GLPK, jQuery, Linux, and MATLAB. Steve’s skills include automation, databases, linear programming, optimization, and testing, all of which he uses in conjunction with Fresh’s digital strategists provide innovative solutions to clients.

;