Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Workflows Git : Gitflow, Feature Branch, Trunk-Based

9 min de lecture

Le workflow de branching définit comment votre équipe organise ses branches, intègre le code et livre en production. Il n’existe pas de workflow universel — le bon choix dépend de la taille de l’équipe, du rythme de livraison et du type de projet. Ce guide compare les cinq principaux workflows pour vous aider à décider.

Prérequis : Les branches en bref et Merge et conflits.

  • Comparer les 5 workflows Git : centralisé, feature branch, Gitflow, forking, trunk-based
  • Identifier forces et faiblesses de chaque stratégie de branchement
  • Choisir le workflow adapté à votre équipe, release cadence et CI/CD
  • Éviter les antipatterns courants (branches trop longues, merges massifs)

Le plus simple : tout le monde travaille sur main.

main : ─── C1 ── C2 ── C3 ── C4 ── C5 ───
↑ ↑ ↑ ↑ ↑
Dev A Dev B Dev A Dev C Dev B
  • Pas de branches (ou très rarement)
  • Chaque dev fait pull --rebase puis push
  • Adapté aux équipes de 1-3 personnes sur un projet simple

Chaque fonctionnalité est développée sur sa propre branche, puis intégrée via une PR.

main : ─── C1 ────── C2 ─── M1 ─── M2 ───
│ ↑ ↑
feature/a: └── C3 ┘ │
feature/b: └── C4 ── C5 ┘
  1. Créer une branche depuis main : git switch -c feature/user-auth

  2. Travailler et commiter

  3. Pousser et ouvrir une PR

  4. Review, approbation, merge

  5. Supprimer la branche

ForceFaiblesse
Isolation du travailBranches longues = merge complexe
Revue de code naturellePas de convention sur le nommage des branches
Simple à comprendrePas de gestion des releases

C’est le workflow le plus répandu. Il convient à la majorité des projets.

Un workflow structuré avec des branches à rôle fixe.

main : ─── v1.0 ──────────────── v1.1 ── v2.0 ───
│ ↑ ↑
hotfix : │ ─ fix ──┘ │
│ │
release : │ ─── RC1 ── RC2 ┘
│ ↑
develop : ─── D1 ── D2 ── D3 ── D4 ── D5 ── D6 ───
│ ↑ ↑
feature : └── F1 ── F2 │
└── F3 ── F4 ┘
BrancheDurée de vieRôle
mainPermanenteCode en production (tags de version)
developPermanenteIntégration des features
feature/*TemporaireDéveloppement d’une fonctionnalité
release/*TemporairePréparation d’une version (stabilisation)
hotfix/*TemporaireCorrection urgente en production
  1. Les features sont mergées dans develop
  2. Quand develop est stable, on crée release/2.0
  3. Corrections de bugs sur la branche release
  4. La release est mergée dans main et develop
  5. main est taguée (v2.0)
ForceFaiblesse
Gestion des releases structuréeComplexe (5 types de branches)
Hotfixes clairsMerge fréquents entre branches
Adapté au versioning strictCycle de release lent

Une version simplifiée du Feature Branch Workflow, pensée pour le déploiement continu.

main : ─── C1 ── C2 ── M1 ── M2 ── M3 ── (deploy)
│ ↑ ↑ ↑
feature : └── C3 ┘ │ │
fix : └─ C4 ┘ │
feature : └── C5 ┘
  1. main est toujours déployable
  2. Créez une branche pour chaque changement
  3. Ouvrez une PR tôt (draft si besoin)
  4. Après review + CI verte, mergez dans main
  5. Déployez immédiatement après le merge
ForceFaiblesse
Très simple (2 types de branches)Pas de gestion de releases
Déploiement continu natifNécessite une CI/CD robuste
PRs pour toutmain doit toujours être stable

Le mouvement le plus radical : tout le monde pousse sur main (le « trunk »), avec des branches très courtes (< 1 jour).

main : ─── C1 ── C2 ── C3 ── C4 ── C5 ── C6 ── (deploy)
↑ ↑ ↑
short-lived: └─ F1 ┘ │ │
└── F2 ┘ │
└── F3 ┘
  • Les branches vivent moins d’un jour (idéalement quelques heures)
  • Les features incomplètes sont cachées derrière des feature flags
  • L’intégration continue est essentielle (tests automatisés obligatoires)
  • Le déploiement est fréquent (plusieurs fois par jour)
ForceFaiblesse
Intégration continue réelleDiscipline rigoureuse requise
Pas de branches longuesFeature flags à gérer
Feedback rapideNécessite une excellente CI/CD
Réduit les conflits de mergeDifficile pour les juniors

Un compromis entre GitHub Flow et Gitflow, avec des branches d’environnement.

main : ─── C1 ── C2 ── M1 ── M2 ───
│ │
pre-production: M1' M2'
│ │
production : M1'' M2''
  • main est la branche de développement
  • Des branches d’environnement (pre-production, production) reçoivent les merges de main
  • Le merge vers production déclenche le déploiement
  • Variante : branches de release (1-stable, 2-stable) pour le support multi-versions
CritèreCentralizedFeature BranchGitflowGitHub FlowTrunk-BasedGitLab Flow
ComplexitéFaibleFaibleÉlevéeFaibleMoyenneMoyenne
Revue de codeNonOui (PR)OuiOui (PR)OptionnelleOui (MR)
Rythme de releaseVariableVariablePlanifiéContinuContinuVariable
Branches longuesNonPossibleOuiNonNonOui (env.)
CI/CD requisNonRecommandéRecommandéOuiObligatoireOui
Taille d’équipe1-32-205-502-305-100+5-50
Votre situationWorkflow recommandé
Seul ou 2-3 développeursCentralized ou Feature Branch
Équipe avec CI/CD matureGitHub Flow ou Trunk-Based
Releases planifiées (SaaS, mobile)Gitflow
Déploiement continu (web)GitHub Flow ou Trunk-Based
Multi-environnements (staging, prod)GitLab Flow
Très grande équipeTrunk-Based (avec feature flags)
  • Feature Branch : une branche par feature + PR — le plus courant
  • Gitflow : branches structurées (main/develop/feature/release/hotfix) pour les releases planifiées
  • GitHub Flow : simple, tout passe par PR, déploiement continu
  • Trunk-Based : branches très courtes, feature flags, le plus performant selon DORA
  • GitLab Flow : branches d’environnement, compromis entre GitHub Flow et Gitflow
  • Il n’y a pas de workflow parfait — choisissez selon votre contexte

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn