Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Gestion des branches Git

6 min de lecture

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.

  • 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
Fenêtre de terminal
# Branches locales avec dernier commit
git branch -v

Sortie :

feature/auth a1b2c3d Ajouter l'authentification JWT
fix/header e4f5g6h Corriger le z-index du header
* main i7j8k9l Merge pull request #42

L’astérisque * indique la branche courante.

Fenêtre de terminal
# Branches déjà fusionnées dans HEAD (supprimables)
git branch --merged
# Branches non encore fusionnées (travail en cours)
git branch --no-merged
Fenêtre de terminal
# 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/auth
3 days ago fix/header
1 week ago main

Une branche bien nommée renseigne instantanément sur son contenu. La convention la plus répandue utilise un préfixe/description :

PréfixeUsageExemple
feature/Nouvelle fonctionnalitéfeature/user-profile
fix/Correction de bugfix/login-redirect
hotfix/Correction urgente en productionhotfix/security-patch
chore/Tâche technique (deps, CI, docs)chore/update-eslint
refactor/Refactoring sans changement fonctionnelrefactor/auth-module
release/Préparation d’une releaserelease/2.1.0
  • Minuscules avec des tirets : feature/user-profile (pas Feature/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
Fenêtre de terminal
# Renommer la branche courante
git branch -m nouveau-nom
# Renommer une branche spécifique
git branch -m ancien-nom nouveau-nom

Si la branche est déjà poussée, mettez à jour le remote :

Fenêtre de terminal
git push origin -u nouveau-nom
git push origin --delete ancien-nom
  1. Vérifiez les branches fusionnées :

    Fenêtre de terminal
    git branch --merged main
  2. Supprimez-les (sauf main et develop) :

    Fenêtre de terminal
    git branch --merged main | grep -vE '^\*|main|develop' | xargs -r git branch -d

    Cette commande :

    • Liste les branches fusionnées dans main
    • Exclut la branche courante (*), main et develop
    • Supprime chacune avec -d (refus si non fusionnée)

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 :

Fenêtre de terminal
# Voir les branches distantes périmées
git remote prune origin --dry-run
# Nettoyer effectivement
git remote prune origin

Ou en une seule commande à chaque fetch :

Fenêtre de terminal
git fetch --prune

Pour en faire le comportement par défaut :

Fenêtre de terminal
git config --global fetch.prune true

Voici un résumé des commandes à exécuter régulièrement :

Fenêtre de terminal
# 1. Mettre à jour et nettoyer les refs distantes
git fetch --prune
# 2. Lister les branches locales fusionnées
git 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ées
git branch --no-merged main -v
SymptômeCause probableSolution
error: branch 'x' is not fully mergedBranche non mergée, -d refuseVérifiez avec git log main..x, utilisez -D si le travail est abandonné
Des branches origin/... obsolètes persistentRemote non nettoyégit fetch --prune
cannot rename the current branchVous êtes sur la branche à renommerC’est normal, -m nouveau-nom fonctionne depuis la branche courante
La branche renommée n’est pas mise à jour sur le remoteRenommage local uniquementPoussez le nouveau nom et supprimez l’ancien sur le remote
  • git branch -v affiche les branches avec leur dernier commit
  • --merged et --no-merged identifient les branches à nettoyer
  • Utilisez une convention préfixe/description : feature/, fix/, hotfix/, chore/
  • git fetch --prune nettoie les références distantes supprimées
  • Nettoyez vos branches régulièrement pour garder un dépôt lisible

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn