🌿 GitFlow
Vue d'ensemble
1main <- Production. Stable. Sacrée. On n'y touche jamais directement.
2│
3├── hotfix/ <- Correction urgente en production. Créée depuis main.
4│
5develop <- Branche d'intégration. Toujours à jour. Base de tout développement.
6│
7├── feature/ <- Nouvelle fonctionnalité. Créée depuis develop.
8│
9└── release/ <- Préparation d'une version. Créée depuis develop.📌 Règles absolues
❌ On ne push JAMAIS directement sur
mainoudevelop✅ Tout passe par une Pull Request reviewée
🔄 Cycle de vie d'une fonctionnalité
1. Créer sa branche depuis develop
bash
1git checkout develop
2git pull origin develop
3git checkout -b feature/nom-fonctionnalite2. Développer et committer
bash
1git add .
2git commit -m "feat: description courte de ce que tu as fait"
3git push origin feature/nom-fonctionnalite3. Ouvrir une Pull Request
- Base :
develop - Compare :
feature/nom-fonctionnalite - Remplir le template de PR
- Assigner un reviewer
4. Après validation -> merge dans develop puis supprimer la branche
🚨 Cycle de vie d'un Hotfix
bash
1# Depuis main uniquement
2git checkout main
3git pull origin main
4git checkout -b hotfix/description-courte
5
6# ... corriger le bug ...
7
8git commit -m "fix: description du correctif"
9git push origin hotfix/description-courte
10
11# Ouvrir une PR vers main ET une PR vers develop⚠️ Un hotfix doit toujours être mergé dans main ET develop pour ne pas perdre la correction.
🚀 Cycle de vie d'une Release
bash
1# Depuis develop
2git checkout develop
3git pull origin develop
4git checkout -b release/v1.2.0
5
6# Derniers ajustements, bump de version...
7git commit -m "chore: bump version to 1.2.0"
8git push origin release/v1.2.0
9
10# PR vers main, puis PR vers develop📛 Nommage des branches
| Type | Format | Exemple |
|---|---|---|
| Fonctionnalité | feature/nom-fonctionnalite | feature/authentification-oauth |
| Correction urgente | hotfix/description-courte | hotfix/fix-login-crash |
| Release | release/vX.Y.Z | release/v1.2.0 |
Règles de nommage
- ✅ En anglais - comme les commits et le code
- ✅ Minuscules uniquement
- ✅ Tirets
-pour séparer les mots (pas d'underscore, pas d'espace) - ✅ Nom court mais descriptif
- ❌ Pas de caractères spéciaux
- ❌ Pas de
/supplémentaires dans le nom