Aller au contenu principal

Workflows Git — Git Flow, GitHub Flow, Trunk-Based

Module 04 45 min

Objectifs de la section​

  • Comprendre les 3 principaux workflows Git
  • Choisir le workflow adapté à votre contexte
  • Mettre en place GitHub Flow dans votre équipe
  • Connaître les avantages et inconvénients de chaque approche

Les 3 principaux workflows​

Vue d'ensemble comparative​

CritèreGit FlowGitHub FlowTrunk-Based
ComplexitéÉlevéeSimpleTrès simple
BranchesMultiples (develop, release, hotfix)Simple (feature + main)Très peu
DéploiementPériodique (releases)Continu possibleContinu (CD)
Idéal pourLogiciels versionnésApps web / SaaSDevOps avancé
Taille équipeMoyennes et grandesToutes taillesExpérimentées

Git Flow​

Git Flow utilise plusieurs branches permanentes et des branches de support.

Structure des branches​

Branches dans Git Flow​

BrancheDuréeRôle
mainPermanenteCode en production (toujours stable)
developPermanenteIntégration des fonctionnalités
feature/*TemporaireDéveloppement de fonctionnalités
release/*TemporairePréparation d'une release
hotfix/*TemporaireCorrections urgentes en production
# Installer git-flow (outil CLI optionnel)
# macOS : brew install git-flow-avh
# Linux : apt-get install git-flow

# Initialiser git flow
git flow init

# Démarrer une fonctionnalité
git flow feature start nouvelle-fonctionnalite
# Équivalent à : git switch -c feature/nouvelle-fonctionnalite develop

# Terminer une fonctionnalité
git flow feature finish nouvelle-fonctionnalite
# Équivalent à : merge dans develop + suppression de la branche

# Démarrer une release
git flow release start v1.2.0

# Démarrer un hotfix
git flow hotfix start correction-critique
Quand choisir Git Flow ?
  • Applications avec des cycles de release définis (mensuels, trimestriels)
  • Logiciels avec plusieurs versions en production simultanément
  • Équipes avec des processus de QA stricts

GitHub Flow​

Un workflow simple et efficace, idéal pour le déploiement continu.

Les 6 étapes de GitHub Flow​

# 1. Créer une branche depuis main (toujours à jour)
git switch main
git pull origin main
git switch -c feature/amelioration-recherche

# 2. Travailler et commiter
git add .
git commit -m "feat(search): ajouter la recherche par filtres avancés"
git push -u origin feature/amelioration-recherche

# 3. Ouvrir une PR
gh pr create --title "feat: recherche par filtres avancés" --base main

# 4. Revue de code, discussions, corrections

# 5. Tester en staging (optionnel, selon CI/CD)

# 6. Merger et supprimer la branche
gh pr merge --squash --delete-branch
Quand choisir GitHub Flow ?
  • Applications web et SaaS (déploiement fréquent)
  • Petites et moyennes équipes
  • Projets open source
  • Quand vous voulez quelque chose de simple à comprendre

Trunk-Based Development​

Tout le monde commite directement sur la branche principale, avec des feature flags pour les fonctionnalités incomplètes.

# Commits directs sur main (très petits, très fréquents)
git switch main
git pull

# Petite fonctionnalité complète en quelques heures max
# avec feature flag si nécessaire
git add feature_x.py
git commit -m "feat: ajouter fonctionnalité X (désactivée par défaut)"
git push origin main

# Branche de courte durée acceptable (max 1-2 jours)
git switch -c feat/amelioration-rapide
# ... quelques commits ...
git switch main
git merge feat/amelioration-rapide
Quand choisir Trunk-Based ?
  • Équipes très expérimentées avec forte culture DevOps
  • Déploiement en continu (plusieurs fois par jour)
  • Excellente couverture de tests (>80%)
  • Maturité en feature flags

Choisir votre workflow​


Prochaines étapes​