Aller au contenu principal

Gestion des Branches Git


Table des matières


  1. Concepts des branches
  2. Créer et supprimer des branches
  3. Naviguer entre branches
  4. Fusionner des branches
  5. Stratégies de branching
  6. Bonnes pratiques


1 - Concepts des branches



Qu'est-ce qu'une branche ?

Une branche est simplement un pointeur vers un commit.

      A---B---C  feature
/
D---E---F---G main

HEAD

Pourquoi utiliser des branches ?

UsageExemple
Nouvelle fonctionnalitéfeature/login
Correction de bugfix/button-click
Expérimentationexperiment/new-ui
Versionsrelease/v2.0

La branche main/master

  • Branche principale du projet
  • Contient le code de production
  • Doit toujours être stable

🔝 Retour à la table des matières



2 - Créer et supprimer des branches



Créer une branche

# Créer une branche (sans y aller)
git branch feature/login

# Créer et aller sur la branche
git checkout -b feature/login

# Syntaxe moderne
git switch -c feature/login

Créer depuis un commit spécifique

git branch feature/old-version abc1234

Lister les branches

# Branches locales
git branch

# Branches avec dernier commit
git branch -v

# Toutes les branches (locales + remote)
git branch -a

# Branches mergées
git branch --merged

# Branches non mergées
git branch --no-merged

Supprimer une branche

# Supprimer (si mergée)
git branch -d feature/login

# Forcer la suppression
git branch -D feature/login

# Supprimer sur le remote
git push origin --delete feature/login

Renommer une branche

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

# Renommer une autre branche
git branch -m ancien-nom nouveau-nom

🔝 Retour à la table des matières





Changer de branche

# Ancienne syntaxe
git checkout feature/login

# Nouvelle syntaxe (Git 2.23+)
git switch feature/login

Revenir à la branche précédente

git checkout -
git switch -

Vérifier la branche actuelle

git branch --show-current
git status # Affiche aussi la branche

Attention aux modifications non commitées

# Si vous avez des modifications non commitées
git checkout feature/login
# error: Your local changes would be overwritten

# Solutions :
# 1. Commiter
git commit -am "wip"

# 2. Stasher
git stash
git checkout feature/login
git stash pop # Quand vous revenez

🔝 Retour à la table des matières



4 - Fusionner des branches



Merge de base

# Aller sur la branche destination
git checkout main

# Fusionner la feature branch
git merge feature/login

Types de merge

Fast-forward merge

Quand main n'a pas changé depuis la création de la branche :

Avant:
D---E main
\
A---B feature

Après (fast-forward):
D---E---A---B main, feature
git merge feature  # Fast-forward automatique

Merge commit

Quand main a évolué :

Avant:
A---B feature
/
D---E---F main

Après:
A---B
/ \
D---E---F---M main
git merge feature  # Crée un merge commit

Forcer un merge commit

git merge --no-ff feature/login

Avantage : L'historique montre clairement où la feature a été intégrée.

Annuler un merge

# Pendant le merge (conflits)
git merge --abort

# Après le merge
git reset --hard HEAD~1

🔝 Retour à la table des matières



5 - Stratégies de branching



Git Flow

Structure complète pour les grands projets :

main ─────────────●─────────────────●───────
↑ ↑
release ─────────●───────● ●───────
↑ ↑ ↑
develop ────●────●───────●─────────●───────
↑ ↑ ↑ ↑
feature ────●────● │ │
│ │
hotfix ──────────────────●─────────┘
BrancheUsage
mainProduction
developIntégration
feature/*Nouvelles fonctionnalités
release/*Préparation des releases
hotfix/*Corrections urgentes

GitHub Flow

Plus simple, idéal pour le déploiement continu :

main ────●────●────●────●────●────
↑ ↑ ↑
feature ─● │ │
│ │
feature ──────● │

feature ───────────●
  1. Créer une branche depuis main
  2. Faire des commits
  3. Ouvrir une Pull Request
  4. Review et discussion
  5. Merger dans main
  6. Déployer

Trunk-Based Development

Tout le monde travaille sur main avec des feature flags :

main ────●────●────●────●────●────
↑ ↑ ↑ ↑ ↑
dev1 dev2 dev1 dev3 dev2

Idéal pour : Équipes expérimentées, déploiement très fréquent.

🔝 Retour à la table des matières



6 - Bonnes pratiques



Nommage des branches

# Format recommandé
type/description-courte

# Exemples
feature/user-authentication
fix/login-button
hotfix/security-patch
release/v2.1.0

✅ À faire

PratiqueRaison
Branches courtesMoins de conflits
Un objectif par brancheFacilite les reviews
Merge régulièrement mainRester à jour
Supprimer après mergeGarder propre

❌ À éviter

PratiqueRisque
Branches de longue duréeConflits difficiles
Noms vagues (fix, test)Confusion
Travailler directement sur mainCode instable

Résumé des commandes

CommandeDescription
git branchLister les branches
git branch nomCréer une branche
git checkout -b nomCréer et aller sur la branche
git switch nomChanger de branche
git merge nomFusionner une branche
git branch -d nomSupprimer une branche

🔝 Retour à la table des matières