Skip to content

Gitflow

GitFlow is a branching model for version control using Git. It provides a clear structure for collaborative development and release management.

Main branches

The Minimum Viable Products

The goal is to explain the design and planning for managing the code when a Minimum Viable Product (MVP) is completed and ready for testing in a release. At the same time, this MVP is delivered to the customer as soon as possible, while the team continues to work on the next MVP.

Telmo Riofrio

  1. Stability and Version Control:
    GitFlow uses branches to represent both the development and production environments. These branches can be named, for development, develop, unstable, main, trunk, among others. For production, they can be named master, production, stable, or even with the latest version number, such as 1.x. This approach ensures stability while enabling continuous evolution of the software.

  2. Complementary Branches:
    The complementary branches of GitFlow are usually feature and hotfix, which can be named as follows: feature/name-of-the-requirement and hotfix/name-of-the-issue.

  3. Tags:
    The GitFlow methodology is complemented by a good use of tags. These tags can follow the nomenclature SemVer, a standard for semantic versioning.

Branch Structure

  • master/main: Represents the main branch of the project, which reflects the stable and production-ready version.
  • development: Development branch where all the features in progress are integrated.
  • feature/: Branches used to develop new features or functionalities.
  • release/: Branches used to prepare a new production version.
  • hotfix/: Branches used to fix critical bugs in production.
  • unstable: Branch for continuous integrations and testing of unstable code before moving to develop.
  • production: Main production branch containing the most stable version of the software and ready to be deployed.
  • stable: Branch that reflects a more controlled and stable version before moving to production.
  • 1.x: Numbered version branch indicating the latest stable version, such as 1.0, 1.1, etc.

Workflow

Good Development Practices

Significant Branch Names: No branch name should start with an uppercase letter. All branches must use lowercase and dashes (-) to separate different words. Avoid using underscores (_).

Agile Methodological Organization: Integrate GitFlow into an agile development process, enabling frequent deliveries and continuous adaptation.

Project start-up

A Git repository is created and the main branches (master/main, develop) are established and protected.

Feature Development

Feature branches are created to implement new functionalities. Once completed, the features are merged into the develop branch.

Preparation and Launching

A release branch is created from develop to prepare a production version. Final testing and tuning is performed on the release branch. The final version is merged into master/main and develop, and tagged with a version number.

Urgent Arrangements

If critical issues arise in production, a hotfix branch is created to fix them. Once fixed, the changes are merged into master/main and develop.