Les branches s’accumulent vite dans un projet actif. Sans convention de nommage ni nettoyage régulier, le dépôt devient illisible. Ce guide donne les commandes pour inspecter vos branches, une convention de nommage éprouvée, et un workflow de nettoyage.
Prérequis : Les branches Git en bref et Merge et résolution de conflits.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Lister et trier vos branches par date, auteur ou état de fusion
- Appliquer des conventions de nommage pour les branches de feature et fix
- Identifier et supprimer les branches obsolètes après fusion
- Gérer les branches locales et distantes de façon cohérente
Inspecter vos branches
Section intitulée « Inspecter vos branches »Lister avec détails
Section intitulée « Lister avec détails »# Branches locales avec dernier commitgit branch -vSortie :
feature/auth a1b2c3d Ajouter l'authentification JWT fix/header e4f5g6h Corriger le z-index du header* main i7j8k9l Merge pull request #42L’astérisque * indique la branche courante.
Filtrer par état de fusion
Section intitulée « Filtrer par état de fusion »# Branches déjà fusionnées dans HEAD (supprimables)git branch --merged
# Branches non encore fusionnées (travail en cours)git branch --no-mergedTrier par date
Section intitulée « Trier par date »# Branches triées par dernier commit (les plus récentes en premier)git branch --sort=-committerdate --format='%(committerdate:relative) %(refname:short)'Sortie :
2 hours ago feature/auth3 days ago fix/header1 week ago mainConventions de nommage
Section intitulée « Conventions de nommage »Une branche bien nommée renseigne instantanément sur son contenu. La convention la plus répandue utilise un préfixe/description :
| Préfixe | Usage | Exemple |
|---|---|---|
feature/ | Nouvelle fonctionnalité | feature/user-profile |
fix/ | Correction de bug | fix/login-redirect |
hotfix/ | Correction urgente en production | hotfix/security-patch |
chore/ | Tâche technique (deps, CI, docs) | chore/update-eslint |
refactor/ | Refactoring sans changement fonctionnel | refactor/auth-module |
release/ | Préparation d’une release | release/2.1.0 |
Règles de nommage
Section intitulée « Règles de nommage »- Minuscules avec des tirets :
feature/user-profile(pasFeature/UserProfile) - Court et descriptif : 2 à 4 mots après le préfixe
- Pas d’espaces ni de caractères spéciaux (sauf
/et-) - Référence au ticket si applicable :
fix/JIRA-123-login-error
Renommer une branche
Section intitulée « Renommer une branche »# Renommer la branche courantegit branch -m nouveau-nom
# Renommer une branche spécifiquegit branch -m ancien-nom nouveau-nomSi la branche est déjà poussée, mettez à jour le remote :
git push origin -u nouveau-nomgit push origin --delete ancien-nomNettoyer les branches obsolètes
Section intitulée « Nettoyer les branches obsolètes »Supprimer les branches locales fusionnées
Section intitulée « Supprimer les branches locales fusionnées »-
Vérifiez les branches fusionnées :
Fenêtre de terminal git branch --merged main -
Supprimez-les (sauf
mainetdevelop) :Fenêtre de terminal git branch --merged main | grep -vE '^\*|main|develop' | xargs -r git branch -dCette commande :
- Liste les branches fusionnées dans
main - Exclut la branche courante (
*),mainetdevelop - Supprime chacune avec
-d(refus si non fusionnée)
- Liste les branches fusionnées dans
Supprimer les branches distantes obsolètes
Section intitulée « Supprimer les branches distantes obsolètes »Quand une branche a été supprimée sur le remote (après merge d’une PR),
votre référence locale origin/feature/... persiste. Pour nettoyer :
# Voir les branches distantes périméesgit remote prune origin --dry-run
# Nettoyer effectivementgit remote prune originOu en une seule commande à chaque fetch :
git fetch --prunePour en faire le comportement par défaut :
git config --global fetch.prune trueWorkflow de nettoyage complet
Section intitulée « Workflow de nettoyage complet »Voici un résumé des commandes à exécuter régulièrement :
# 1. Mettre à jour et nettoyer les refs distantesgit fetch --prune
# 2. Lister les branches locales fusionnéesgit branch --merged main
# 3. Supprimer les branches fusionnées (sauf main/develop)git branch --merged main | grep -vE '^\*|main|develop' | xargs -r git branch -d
# 4. Vérifier les branches restantes non fusionnéesgit branch --no-merged main -vDépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
error: branch 'x' is not fully merged | Branche non mergée, -d refuse | Vérifiez avec git log main..x, utilisez -D si le travail est abandonné |
Des branches origin/... obsolètes persistent | Remote non nettoyé | git fetch --prune |
cannot rename the current branch | Vous êtes sur la branche à renommer | C’est normal, -m nouveau-nom fonctionne depuis la branche courante |
| La branche renommée n’est pas mise à jour sur le remote | Renommage local uniquement | Poussez le nouveau nom et supprimez l’ancien sur le remote |
À retenir
Section intitulée « À retenir »git branch -vaffiche les branches avec leur dernier commit--mergedet--no-mergedidentifient les branches à nettoyer- Utilisez une convention préfixe/description :
feature/,fix/,hotfix/,chore/ git fetch --prunenettoie les références distantes supprimées- Nettoyez vos branches régulièrement pour garder un dépôt lisible