Workflow GitFlow

Maîtrisez GitFlow, un workflow puissant pour Git qui organise le développement en branches sémantiques. Apprenez l'installation, l'initialisation et la gestion des branches features et hotfix.

GitFlow est un workflow (flux de travail) qui permet de travailler d'une façon à séparer le travail réalisé sur des branches bien distinctes.

En adoptant GitFlow, il est possible de travailler de façon optimale sur un projet afin de bien identifier à quelle étape d'un projet nous nous trouvons, ainsi que d'identifier et d'indiquer clairement sur quel type de tâche nous travaillons.

Note:

Bien que GitFlow ne soit rien de plus qu'une manière de travailler avec Git sur un projet, un programme a été développé afin de mettre en place GitFlow de manière optimale et d'automatiser les commandes Git nécessaires.

Installation

Windows

Sous Windows, Git comporte déjà le module GitFlow, donc si vous avez déjà installé Git, vous possédez déjà GitFlow. Si vous n'avez pas encore installé Git, téléchargez-le ici.

Mac

Pour installer GitFlow sous Mac avec HomeBrew :

brew install git-flow

Linux

Prise en main

Initialisation

Afin d'initialiser GitFlow, il vous suffit d'entrer la commande :

git flow init

Dans un dossier qui peut déjà être un dépôt Git, ou non.

Initialisation GitFlow

Note:

Il est recommandé de nommer la branche principale main plutôt que master pour les pratiques Git modernes.

Pour tout le reste, il n'appartient qu'à vous de décider du nom des branches, bien qu'en pratique, les noms par défaut soient gardés.

Branches Features

Les branches Features sont des branches qui seront utiles afin de développer de nouvelles fonctionnalités à votre projet. Bien qu'elles ne soient rien d'autre que des branches, elles permettent d'indiquer sémantiquement que les modifications apportées au sein de ces branches seront des modifications concernant l'ajout d'une fonctionnalité.

Création

Pour créer une branche de type Feature, rien de plus simple - exécutez simplement la commande :

git flow feature start <nom_de_la_branche>

GitFlow Feature

Note:

Commandes équivalentes sans GitFlow :

git checkout develop
git checkout -b feature/<nom_de_la_branche>

Terminaison

Lorsque votre travail est terminé, vous voulez que ce dernier soit ajouté à la branche develop. Dans ce cas, la procédure à suivre est simple :

git flow feature finish <nom_de_la_branche>
git pull origin develop

En faisant cela, vous allez fusionner votre travail sur la branche develop et récupérer celui qui a été produit en parallèle.

Note:

Commandes équivalentes sans GitFlow :

git checkout develop
git merge feature/<nom_de_la_branche>
git branch -D feature/<nom_de_la_branche>
git pull origin develop

Branches Correctives (Hotfix)

Les branches correctives (hotfix) ont elles aussi une utilité sémantique - elles servent à apporter des corrections à une ou plusieurs fonctionnalités ou systèmes au sein de votre projet. Ces branches sont généralement créées depuis la branche principale pour corriger des problèmes critiques en production.

Création

Pour créer une branche hotfix, c'est simple - il suffit d'exécuter la commande :

git flow hotfix start <nom_de_la_branche>

Note:

Commandes équivalentes sans GitFlow :

git checkout main
git checkout -b hotfix/<nom_de_la_branche>

Terminaison

Lorsque votre travail est terminé, vous n'avez plus qu'à fermer votre branche en exécutant la commande :

git flow hotfix finish <nom_de_la_branche>

Note:

Important : La finalisation d'un hotfix fusionnera les modifications dans les branches main et develop pour s'assurer que la correction soit présente à la fois en production et dans le développement futur.

Commandes équivalentes sans GitFlow :

git checkout main
git merge hotfix/<nom_de_la_branche>
git checkout develop
git merge hotfix/<nom_de_la_branche>
git branch -D hotfix/<nom_de_la_branche>

Structure des branches GitFlow

1

Branche Main

Contient le code prêt pour la production. Ne reçoit que les fusions des branches hotfix et release.

2

Branche Develop

Contient les dernières modifications de développement. Les features y sont fusionnées et c'est là que les releases sont préparées.

3

Branches Feature

Créées depuis develop pour les nouvelles fonctionnalités. Fusionnées vers develop une fois terminées.

4

Branches Hotfix

Créées depuis main pour les corrections critiques. Fusionnées vers main et develop.

Résumé

  • GitFlow est un workflow qui donne un sens sémantique aux différentes branches
  • L'installation varie selon la plateforme mais est disponible pour Windows, Mac et Linux
  • L'initialisation avec git flow init configure la structure des branches
  • Les branches feature sont utilisées pour le développement de nouvelles fonctionnalités
  • Les branches hotfix sont utilisées pour les corrections critiques qui doivent aller en production immédiatement
  • Chaque type de branche a des commandes spécifiques de création et de finalisation qui automatisent les opérations Git sous-jacentes

Note:

GitFlow est particulièrement utile pour les équipes plus importantes et les projets avec des releases régulières. Pour les projets plus petits ou les équipes pratiquant le déploiement continu, des workflows plus simples comme GitHub Flow peuvent être plus appropriés.