Branche Conventionnelle
Créez des branches Git qui suivent la spécification Conventional Branch — une convention simple et cohérente pour nommer les branches Git.
Format du Nom de Branche
<type>/<description>
Types de Branches
| Type | Alias | Objectif |
|---|---|---|
feature/ |
feat/ |
Nouvelles fonctionnalités ou améliorations |
bugfix/ |
fix/ |
Corrections de bugs |
hotfix/ |
— | Corrections urgentes en production |
release/ |
— | Préparation de release (points autorisés dans la version : release/v1.2.0) |
chore/ |
— | Tâches sans code (dépendances, docs, config) |
Branches Principales
main, master et develop sont des branches principales — elles n'utilisent pas de préfixe. Ne créez jamais de nouvelles branches avec les mêmes noms que les branches principales ; créez plutôt des branches à partir d'elles.
Règles de Nommage
- Minuscules uniquement — pas de majuscules nulle part
- Alphanumériques, tirets et points —
a-z,0-9,-,. - Points autorisés uniquement dans les descriptions de version
release/(ex.release/v1.2.0) - Pas de tirets bas, espaces ou caractères spéciaux
- Pas de tirets consécutifs (
--), points (..) ou adjacence tiret-point (-.ou.-) - Pas de tirets ou points en début ou fin de description
Exemples Valides
main
master
develop
feature/add-login-page
feat/add-login-page
bugfix/fix-header-bug
fix/header-bug
hotfix/security-patch
release/v1.2.0
chore/update-dependencies
feature/issue-123-new-login
Exemples Invalides
| Branche | Problème |
|---|---|
Feature/Add-Login |
Majuscules |
feature/new--login |
Tirets consécutifs |
feature/-new-login |
Tiret en début |
feature/new-login- |
Tiret en fin |
release/v1.-2.0 |
Tiret adjacent à un point |
fix/header bug |
Espace |
fix/header_bug |
Tiret bas |
unknown/some-task |
Type de préfixe inconnu |
Recommandations de Description
- Utilisez kebab-case avec 2-5 mots
- Soyez descriptif mais concis (~50 caractères total)
- Bon :
add-oauth-login,fix-header-overflow,update-ci-config - Mauvais :
fix-bug,new-feature
Flux de Travail
Suivez ces étapes :
Étape 1 — Déterminer le Type de Branche
Demandez à l'utilisateur (si ce n'est pas déjà clair) :
- Type de branche — par défaut
featureen cas de doute - Description brève — à quoi sert la branche
Si l'utilisateur mentionne un numéro de ticket ou d'issue, incluez-le dans la description (ex. feature/issue-123-add-oauth).
Étape 2 — Valider le Nom
Vérifiez le nom assemblé selon les Règles de Nommage ci-dessus. Si une règle échoue, corrigez-la :
- Mettez tout en minuscules
- Remplacez les tirets bas et espaces par des tirets
- Fusionnez les tirets consécutifs
- Supprimez les tirets en début et fin
Étape 3 — Détecter la Branche de Base
Les différents repos utilisent différentes branches principales. Détectez celle utilisée par ce repo :
# Préférez la branche par défaut du remote
git symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null | sed 's|^origin/||'
Si rien n'est retourné, vérifiez quelle branche principale existe localement (ordre de priorité : develop, main, master) :
for b in develop main master; do
git show-ref --verify --quiet "refs/heads/$b" && echo "$b" && break
done
Étape 4 — Créer et Basculer
git checkout <base>
git pull origin <base>
git checkout -b <type>/<description>
Étape 5 — Confirmer
Dites à l'utilisateur :
- Le nom de la branche qui a été créée
- Qu'il est maintenant sur la nouvelle branche
- Rappelez-lui :
git push -u origin <branch-name>quand il est prêt
Relation avec Conventional Commits
Conventional Branch complète Conventional Commits :
| Conventional Branch | Commit Conventionnel Typique |
|---|---|
feature/add-login |
feat: add login page |
bugfix/fix-header |
fix: header overflow on mobile |
chore/update-deps |
chore: bump lodash to 5.0 |
release/v1.2.0 |
chore: release v1.2.0 |
Alignez le type de branche avec les types de commit si possible (ex. branches feature/* avec commits feat:).