Aller au contenu principal

Branches — Travailler en parallèle sans risque

Module 02 60 min

Objectifs de la section

  • Comprendre ce qu'est une branche et pourquoi elle est fondamentale
  • Créer, changer, renommer et supprimer des branches
  • Comprendre la différence entre HEAD et une branche
  • Connaître les conventions de nommage des branches

Qu'est-ce qu'une branche ?

Une branche est simplement un pointeur léger et déplaçable vers un commit. Quand vous créez une nouvelle branche, Git crée juste un nouveau pointeur — il ne copie rien.

Quand vous créez une nouvelle branche et faites un commit :

Pourquoi utiliser des branches ?

Sans branchesAvec branches
Travailler directement sur mainIsoler chaque fonctionnalité/correction
Les changements cassants affectent tout le mondeLes erreurs sont isolées
Impossible de travailler en parallèleN développeurs travaillent simultanément
Pas moyen d'« essayer quelque chose »Expérimenter librement, supprimer si ça échoue
Pas de revues de codePRs par branche
Les branches sont gratuites

Créer une branche dans Git est presque instantané et a presque zéro coût en termes d'espace disque. Utilisez-les généreusement.


Gérer les branches

Créer une branche

# Créer une branche (sans changer de branche)
git branch feature/login

# Créer ET changer de branche (syntaxe moderne)
git switch -c feature/login

# Créer ET changer (ancienne syntaxe, encore très utilisée)
git checkout -b feature/login

# Créer une branche depuis un commit ou une branche spécifique
git switch -c hotfix/bug-42 main
git switch -c experiment v1.0 # Depuis un tag

Changer de branche

# Syntaxe moderne (recommandée)
git switch main
git switch feature/login

# Ancienne syntaxe (fonctionne toujours)
git checkout main
git checkout feature/login

# Revenir à la dernière branche
git switch -
git checkout - # Équivalent à cd -

Voir les branches

# Lister les branches locales
git branch

# Lister avec le dernier commit
git branch -v

# Lister les branches locales + distantes
git branch -a

# Lister uniquement les branches distantes
git branch -r

# Lister les branches fusionnées (sans risque à supprimer)
git branch --merged

# Lister les branches non fusionnées
git branch --no-merged

Renommer une branche

# Renommer la branche actuelle
git branch -m nouveau-nom

# Renommer une branche spécifique
git branch -m ancien-nom nouveau-nom

# Renommer master → main (pour les dépôts initialisés avec "master")
git branch -m master main

Supprimer une branche

# Supprimer une branche fusionnée
git branch -d feature/login

# Forcer la suppression (même si non fusionnée — ATTENTION !)
git branch -D feature/abandonnee

# Supprimer une branche distante
git push origin --delete feature/login

Conventions de nommage des branches

Un nommage clair et cohérent est une pratique professionnelle :

PréfixeCas d'utilisationExemples
feature/Nouvelle fonctionnalitéfeature/connexion-utilisateur, feature/paiement
fix/ ou bugfix/Correction de bugfix/validation-email, bugfix/crash-ios
hotfix/Correction urgente en productionhotfix/vulnerabilite-securite
release/Préparation de versionrelease/v1.2.0
chore/Maintenancechore/mise-a-jour-dependances
refactor/Refactoring du coderefactor/module-auth
docs/Documentationdocs/guide-api
test/Ajout de teststest/tests-unitaires-login
# Bonnes pratiques de nommage
✅ feature/authentification-utilisateur
✅ fix/entetes-cors-manquants
✅ hotfix/injection-sql-v2.1
✅ release/v2.0.0

❌ fix # Trop vague
❌ MA_FONCTIONNALITE # Pas de majuscules ou underscores
❌ feature/ajout-du-nouveau-formulaire-de-connexion-admin # Trop long
❌ fix-bug # Sans préfixe

Visualiser les branches


Comprendre HEAD en détail

HEAD est un fichier spécial dans .git/HEAD qui indique à Git où vous êtes actuellement :

# Voir le contenu de HEAD
cat .git/HEAD
# En état normal : ref: refs/heads/main
# En état détaché : abc1234def5678...

# Voir ce vers quoi HEAD pointe
git symbolic-ref HEAD # refs/heads/main
git rev-parse HEAD # Hash complet du commit

État HEAD détaché

Le « HEAD détaché » se produit quand HEAD pointe directement vers un commit au lieu d'une branche :

# Cela cause un HEAD détaché
git checkout abc1234

# Avertissement : Vous êtes dans l'état 'HEAD détaché'.
# Vous pouvez regarder, faire des changements expérimentaux et les commiter,
# et vous pouvez annuler tous les commits que vous faites dans cet état
# sans impacter aucune branche en revenant à une branche.

# Retourner à une branche
git switch main
git checkout main

# Sauvegarder votre travail depuis HEAD détaché
git switch -c mon-experience # Créer une branche depuis l'état actuel

Résumé des commandes clés

CommandeDescription
git branchLister les branches locales
git branch -aLister toutes les branches
git branch <nom>Créer une branche
git switch -c <nom>Créer et changer
git switch <nom>Changer de branche
git switch -Revenir à la dernière branche
git branch -d <nom>Supprimer une branche fusionnée
git branch -D <nom>Forcer la suppression
git branch -m <nom>Renommer la branche actuelle

Prochaines étapes