Gestion des branches
Dans un projet git, il est souvent d’usage de définir un modèle de branchement. Une sorte de stratégie ou une convention qu’on utilise pour gérer les différentes branches dans un dépôt Git.
Le git flow
Git Flow est un modèle de gestion de branches pour Git, conçu pour faciliter le développement collaboratif et la gestion des versions de logiciels. Il a été popularisé par Vincent Driessen dans un article de blog en 2010. Voici les principales branches et les règles de base du Git Flow :
Branches principales
-
main
(oumaster
) :- Contient le code de production.
- Toujours stable et prêt à être déployé.
- Les tags de version sont créés à partir de cette branche.
-
develop
:- Contient le code de développement.
- Intègre les nouvelles fonctionnalités et les corrections de bugs.
- Peut être instable car elle est en constante évolution.
Branches de support
-
feature/
:- Utilisées pour développer de nouvelles fonctionnalités.
- Créées à partir de
develop
. - Fusionnées (merged) dans
develop
une fois la fonctionnalité terminée.
-
release/
:- Utilisées pour préparer une nouvelle version de production.
- Créées à partir de
develop
. - Permettent de stabiliser le code avant de le fusionner dans
main
. - Une fois la version stable, fusionnée dans
main
etdevelop
.
-
hotfix/
:- Utilisées pour corriger des bugs critiques en production.
- Créées à partir de
main
. - Une fois le bug corrigé, fusionnée dans
main
etdevelop
.
Exemple de flux de travail
-
Développement d’une nouvelle fonctionnalité :
- Créer une branche
feature/nouvelle-fonctionnalite
à partir dedevelop
. - Développer la fonctionnalité.
- Fusionner la branche
feature/nouvelle-fonctionnalite
dansdevelop
.
- Créer une branche
-
Préparation d’une nouvelle version :
- Créer une branche
release/1.0.0
à partir dedevelop
. - Stabiliser le code, corriger les bugs, préparer la documentation, etc.
- Fusionner la branche
release/1.0.0
dansmain
etdevelop
.
- Créer une branche
-
Correction d’un bug critique en production :
- Créer une branche
hotfix/1.0.1
à partir demain
. - Corriger le bug.
- Fusionner la branche
hotfix/1.0.1
dansmain
etdevelop
.
- Créer une branche
Trunk Based Development
Le Trunk Based Development (TBD) est une autre stratégie de gestion de branches Git privilégie le développement sur une branche principale unique (le “trunk”, généralement main
ou master
). Cette approche favorise l’intégration continue et les déploiements fréquents.
Principes fondamentaux
-
Une branche principale unique :
- Appelée
trunk
,main
oumaster
- Source de vérité unique pour tout le code.
- Toujours prête pour le déploiement.
- Appelée
-
Intégration fréquente:
- Les développeurs poussent leur code plusieurs fois par jour
- Les changements sont petits et incrémentaux.
- Réduction des conflits de fusion grâce aux commit fréquents
Branches de support
features/
:- Branches courtes.
- Créées à partir du trunk.
- Fusionnées rapidement dans le trunk.
- Doivent être petites et facilement revues.
Exemple de flux de travail
-
Développement d’une nouvelle fonctionnalité :
- Créer une branche
feature/small-change
depuis le trunk. - Développer la fonctionnalité
- Utiliser des features toggles pour le code incomplet.
- Fusionner rapidement dans le trunk.
- Créer une branche
-
Gestion des fonctionnalités plus importantes :
- Décomposer en plusieurs petits changements.
- Utiliser des features toggles pour masquer les fonctionnalités incomplètes.
- Intégrer progressivement au trunk.
- Activer la fonctionnalité une fois complète.