Cours
Git Delete Branch : Comment supprimer les branches locales et distantes
Si, comme moi, vous êtes un utilisateur actif de Git, vous avez probablement accumulé une pile de vieilles branches. Certains ont fusionné, d'autres ont été abandonnés, et d'autres encore ne se souviennent même pas avoir été créés. Conserver ces branches peut sembler anodin, mais au fil du temps, elles peuvent encombrer votre cursus et rendre plus difficile le suivi du travail actif.
Dans ce guide, je vais vous expliquer comment supprimer des branches Git localement et à distance, en abordant les méthodes les plus sûres et les pièges potentiels à éviter.
Que fait la suppression d'une branche Git ?
Les branches Git sont temporaires par conception. Ils vous offrent un espace pour travailler sur de nouvelles fonctionnalités, des corrections de bogues ou des expériences sans interférer avec la base de code principale. Mais une fois qu'une branche a rempli sa fonction, la conserver ne fait que l'encombrer inutilement. La suppression de branches est ce que je considère comme un bon entretien pour garder votre flux de travail Git propre et gérable.
Je tiens à rappeler que "supprimer" une branche n'est pas la même chose qu'"effacer" votre travail. Lorsque vous supprimez une branche dans Git, vous n'effacez pas les commits, mais seulement la référence à ces derniers. Voici comment cela fonctionne :
- Supprimer une branche locale supprime la branche de votre référentiel personnel. Si une autre branche ou balise ne fait pas référence à ces commits, ils peuvent éventuellement être nettoyés par le garbage collection de Git.
- La suppression d'une branche distante supprime la branche du référentiel partagé(par exemple, GitHub, GitLab, Bitbucket), ce qui la rend inaccessible aux collaborateurs (). Cependant, toutes les copies locales de cette branche sur d'autres machines seront conservées jusqu'à ce qu'elles soient supprimées ou mises à jour manuellement.
Pourquoi supprimer une branche ?
La suppression d'une branche est un acte de bonne gestion, tout simplement. De la même manière qu'il est bon de supprimer les photos en double, les anciens téléchargements et les dossiers obsolètes, il existe plusieurs bonnes raisons de supprimer une branche une fois que vous n'en avez plus besoin :
- Il garde votre référentiel propre. Un trop grand nombre de succursales, surtout si elles sont obsolètes, rend plus difficile le cursus du travail actif.
- Elle permet d'éviter les confusions. Si une branche n'est plus pertinente, son maintien peut entraîner des incertitudes quant à son utilisation.
- Il améliore la collaboration. Dans les environnements d'équipe, la suppression des branches de fonctionnalités achevées signale que le travail est terminé et évite de travailler inutilement sur du code obsolète.
- Il réduit l'encombrement du dépôt à distance. Les dépôts distants peuvent être encombrés de branches périmées, ce qui complique la navigation dans l'historique du projet pour vous (ou pour un observateur).
Si vous ne connaissez pas Git ou si vous avez besoin de le configurer avant de gérer des branches, consultez le tutoriel d'installation de Git pour obtenir des instructions pas à pas.
Apprenez les bases de Git dès aujourd'hui
Suppression d'une branche locale de Git
Supprimer une branche locale n'est pas difficile ; heureusement, c'est l'une des tâches les plus simples de Git. Passons en revue la manière la plus sûre de procéder et les points à surveiller.
La commande de base pour supprimer une branche locale
Le moyen le plus sûr de supprimer une branche locale est d'utiliser l'option -d
:
git branch -d <branch_name>
Gardez à l'esprit que cette commande ne fonctionne que si la branche a été entièrement fusionnée dans la branche courante (typiquement main
ou master
). S'il y a des changements non fusionnés, Git vous arrêtera pour éviter toute perte accidentelle de données.
Forcer la suppression d'une branche locale
Si vous essayez de supprimer une branche qui contient encore des modifications non fusionnées, Git ne vous laissera pas faire à moins que vous ne le forciez :
git branch -D <branch_name>
L'option -D
(remarquez la majuscule) ignore le contrôle de sécurité et supprime la branche immédiatement, qu'elle soit fusionnée ou non. Je vous conseille vivement de faire preuve de prudence à cet égard. Tout travail non fusionné sera perdu à moins que vous ne disposiez d'une sauvegarde ou d'une autre branche pointant sur les mêmes commits.
Vérification des modifications non fusionnées avant la suppression
Avant d'en arriver à la suppression d'une branche, il est bon de vérifier si elle contient des modifications non fusionnées. Vous pouvez le faire avec :
git branch --no-merged
La commande ci-dessus liste toutes les branches qui n'ont pas été fusionnées dans la branche actuelle. Si celui que vous êtes sur le point de supprimer apparaît dans cette liste, vérifiez que vous n'avez besoin d'aucune de ses modifications avant de continuer.
Vous souhaitez une référence rapide pour les commandes Git, y compris la suppression de branches ? Téléchargez lee Git Cheat Sheet.
Suppression d'une branche Git distante
La suppression d'une branche distante est un peu différente de la suppression d'une branche locale. Comme les branches distantes existent dans les dépôts partagés, leur suppression contribue à l'organisation et empêche les branches obsolètes d'encombrer les flux de travail de l'équipe.
La commande de base pour supprimer une branche distante
Pour supprimer une branche d'un dépôt distant comme GitHub, GitLab ou Bitbucket, utilisez :
git push origin --delete <branch_name>
Cette commande supprime la référence de la branche du référentiel distant, la rendant inaccessible aux autres. Cependant, les copies locales de la branche sur d'autres machines ne seront pas affectées et devront être nettoyées séparément.
Vérification de la suppression de branches à distance
Après avoir supprimé une branche distante, vous devez vous assurer qu'elle a bien disparu. Tout d'abord, récupérez les dernières mises à jour du référentiel distant :
git fetch --prune
Cela permet de supprimer les références obsolètes en matière de suivi à distance. Pour vérifier que la branche n'est plus répertoriée, exécutez la commande suivante :
git branch -r
La commande ci-dessus affiche toutes les branches distantes restantes. Si la branche supprimée apparaît toujours, essayez d'exécuter un autre site git fetch --prune
ou assurez-vous que la commande de suppression a été exécutée sur la bonne télécommande.
Meilleures pratiques pour la suppression des branches Git
La suppression de branches fait partie de la routine de travail avec Git, mais la bonne façon de procéder peut vous éviter des maux de tête inutiles. Voici quelques bonnes pratiques pour organiser votre référentiel et éviter les erreurs potentielles.
Évitez de supprimer prématurément les branches non fusionnées
Avant de supprimer une branche, assurez-vous qu'elle ne contient pas de travail non fusionné encore nécessaire. Si vous n'êtes pas sûr, vérifiez son statut auprès de :
git branch --no-merged
Si la branche contient des modifications importantes qui n'ont pas été fusionnées, envisagez de les fusionner ou de les archiver d'abord au lieu de les supprimer purement et simplement.
Supprimer après la fusion
Une fois qu'une fonctionnalité ou une correction a été fusionnée dans la branche principale (main
ou master
), il n'y a plus de raison de conserver l'ancienne branche. La suppression des branches fusionnées permet d'éviter l'encombrement et de voir plus facilement quelles branches sont encore actives.
Communiquer avec votre équipe
Par courtoisie professionnelle, lorsque vous travaillez sur un projet collaboratif, évitez de supprimer une branche sans en avertir votre équipe. Elle peut être source de confusion ou, pire encore, perturber le travail d'une autre personne. Avant de supprimer une branche distante, vérifiez avec votre équipe que personne ne l'utilise encore. Je préfère un simple message ou une note sur Slack pour éviter toute frustration.
Avant de supprimer une branche, vous pouvez vouloir mettre de l'ordre dans votre historique de livraisons en supprimant des livraisons. Découvrez comment sur notre tutoriel Git Squash Commits.
Problèmes courants lors de la suppression de branches Git
La suppression de branches dans Git ne pose généralement pas de problème, mais il existe quelques pièges courants qui peuvent vous faire trébucher. Voici ce à quoi il faut faire attention et comment gérer ces problèmes s'ils se présentent.
Suppression d'une branche qui n'est pas entièrement fusionnée
Encore une fois, si vous essayez de supprimer une branche qui a encore des modifications non fusionnées en utilisant git branch -d
, Git vous arrêtera pour éviter toute perte de données potentielle. Il s'agit d'une sécurité intégrée. Tout travail non fusionné sera perdu si vous le supprimez de force à l'aide de -D
.
Si vous avez déjà supprimé une branche et que vous vous rendez compte que vous en avez besoin, vous pouvez la récupérer en utilisant la fonction reflog
de Git :
git reflog
git checkout -b <branch_name> <commit_hash>
Cela vous permet de restaurer la branche à partir de sa dernière livraison connue si elle n'a pas été complètement perdue par le ramasse-miettes.
Suppression de la branche actuelle
Git ne vous permet pas de supprimer la branche sur laquelle vous êtes actuellement, ce qui est logique car sinon, vous vous retrouveriez sans branche active. Si vous rencontrez une erreur lorsque vous essayez de supprimer une branche, passez d'abord à une autre branche :
git checkout main
Ou, si vous utilisez Git 2.23+ :
git switch main
Une fois que vous êtes sur une autre branche, vous pouvez supprimer en toute sécurité celle que vous vouliez supprimer.
Vous devez passer d'une branche à l'autre avant d'en supprimer une ? Notre guide sur l' extraction d'une branche distante dans Git vous guide à travers le processus.
Suppression accidentelle d'une branche distante
Si une branche distante a été supprimée par erreur, vous pouvez la restaurer (en supposant que vous ayez encore une copie locale) en la repoussant vers la branche distante :
git push origin <deleted_branch_name>
Cette opération recrée la branche sur le dépôt distant, rétablissant ainsi l'accès des collaborateurs. Si aucune copie locale n'existe, vous devrez peut-être vérifier manuellement l'historique des livraisons et recréer la branche.
Pourquoi ne puis-je pas supprimer une branche Git ?
Si vous avez des difficultés à supprimer une branche dans Git, revenez sur les problèmes courants ; vérifiez si elle est entièrement fusionnée, si vous êtes actuellement sur la branche ou s'il s'agit d'une branche distante. À partir de là, il peut s'agir de vos paramètres ou de vos autorisations.
- La première chose à vérifier est de savoir si vous êtes actuellement sur cette branche. Git ne vous permet pas de supprimer une branche sur laquelle vous travaillez activement, vous devez donc d'abord changer de branche.
- Si ce n'est pas le cas, il se peut que la branche contienne encore des modifications non fusionnées. Git protège les branches contenant du travail non fusionné, donc à moins d'être absolument sûr de ne pas avoir besoin de ces changements, vous devrez fusionner ou forcer la suppression de la branche en utilisant
git branch -D branch-name
. - Si vous essayez de supprimer une branche distante, un simple
git branch -d
ne suffira pas. Au lieu de cela, vous devrez exécutergit push origin --delete branch-name
, et pour nettoyer les anciennes références, vous pouvez utilisergit fetch --prune
. - Certains dépôts, en particulier ceux hébergés sur des plateformes comme GitHub ou GitLab, ont des branches protégées qui ne peuvent pas être supprimées sans modifier les paramètres. Si vous travaillez dans un référentiel partagé, vous pouvez également avoir besoin des autorisations nécessaires pour supprimer des branches.
Toujours bloqué ? L'exécution de git branch -v
peut vous donner plus de détails sur l'état de la branche et vous aider à comprendre ce qui se passe avant de réessayer.
Automatiser le nettoyage des branches avec Git
J'aime l'automatisation. Bien que la suppression manuelle des branches soit une bonne chose et que vous deviez savoir comment procéder, il existe un autre moyen. Si vous avez affaire à un grand nombre de branches (comme dans une équipe), l'automatisation peut vous faire gagner du temps et vous permettre de garder les choses en ordre. Git offre quelques moyens de rationaliser le nettoyage des branches, réduisant ainsi l'encombrement sans effort supplémentaire.
Automatiser le nettoyage des branches à distance
Lorsqu'une branche distante est supprimée, votre Git local conserve une référence à cette branche jusqu'à ce que vous la mettiez à jour manuellement. Au lieu de les nettoyer un par un, vous pouvez les utiliser :
git fetch --prune
La commande ci-dessus supprime automatiquement les références locales aux branches qui n'existent plus sur le dépôt distant, ce qui permet de maintenir la synchronisation. L'exécution régulière de cette opération permet d'éviter que des branches obsolètes ne s'accumulent dans votre dépôt local.
Utiliser les crochets Git pour le nettoyage
Pour les équipes ou les projets plus importants, les hooks Git peuvent aider à automatiser le nettoyage des branches. Les hooks sont des scripts personnalisés qui s'exécutent à certains moments du flux de travail Git, par exemple après la fusion d'une branche. Vous pouvez configurer un crochet de post-fusion pour supprimer automatiquement les branches fusionnées après une période déterminée, ce qui permet d'éviter que les anciennes branches ne s'attardent inutilement.
Conclusion
Les branches peuvent devenir désordonnées au fil du temps, mais un peu d'élagage permet de garder votre référentiel propre et votre flux de travail efficace. En prenant l'habitude de supprimer les branches fusionnées, de revérifier les branches non fusionnées et de maintenir la communication ouverte dans les projets d'équipe, vous pouvez éviter ces problèmes. Et si vous voulez aller plus loin, des outils d'automatisation comme git fetch --prune
et Git hooks peuvent vous aider à garder votre repo propre sans effort supplémentaire.
La suppression de branches n'est qu'une étape vers la maîtrise de Git. Pour approfondir votre compréhension du contrôle de version, consultez le cours Git intermédiaire. Si vous travaillez avec des dépôts GitHub, il est essentiel de maîtriser les concepts fondamentaux de GitHub. Pour en savoir plus, consultez le cours Introduction aux concepts de GitHub!
Apprenez les bases de Git dès aujourd'hui
FAQ
La suppression d'une branche dans Git peut-elle affecter mon code de production ?
Non, la suppression d'une branche n'affecte pas le code de production tant que la branche a déjà été fusionnée dans votre branche principale (main
ou master
). Toutefois, si vous supprimez une branche contenant des modifications non fusionnées, tout le travail qui n'a pas été incorporé dans une autre branche sera perdu. Vérifiez toujours l'état de la fusion avant de la supprimer.
Comment empêcher mon équipe de supprimer accidentellement des branches importantes ?
Si vous travaillez dans un dépôt partagé (GitHub, GitLab, etc.), vous pouvez protéger les branches critiques comme main
et develop
en définissant des règles de protection des branches. Cela permet d'éviter les suppressions accidentelles et les passages en force non autorisés. Pour les dépôts locaux, envisagez d'utiliser des conventions de dénomination (par exemple, en préfixant les branches actives par wip-
pour les travaux en cours) pour indiquer celles qui ne doivent pas encore être supprimées.
Existe-t-il un moyen de savoir qui a supprimé une branche Git distante ?
Oui, dans les dépôts hébergés sur GitHub, GitLab ou Bitbucket, les suppressions de branches sont généralement enregistrées dans le flux d'activité. Vous pouvez consulter les journaux d'audit de votre dépôt ou l'historique des livraisons pour savoir qui a supprimé une branche et quand. Pour les dépôts Git auto-hébergés, vous devrez peut-être mettre en place des hooks côté serveur pour suivre les suppressions manuellement.
Comment récupérer une branche Git supprimée si j'ai fermé mon terminal ?
Si vous avez supprimé une branche et que vous n'avez pas fermé votre terminal, vous pouvez l'annuler avec :
git checkout -b
Mais si vous avez déjà fermé votre terminal, la meilleure option est d'utiliser git reflog
.
Vous obtiendrez ainsi un historique des actions récentes, y compris des suppressions de branches. Trouvez le dernier hash de livraison de la branche supprimée et utilisez-le pour recréer la branche. Toutefois, si la branche a été supprimée à distance et localement, et que personne d'autre ne possède de copie, la récupération peut s'avérer impossible.
Quelle est la différence entre `git branch -d` et `git branch -D` dans le monde réel ?
git branch -d
- Suppression en toute sécurité. Il empêchera la suppression si la branche comporte des modifications non fusionnées, agissant ainsi comme un filet de sécurité.git branch -D
- Forcer la suppression. Il ne se préoccupe pas de savoir si la branche contient des modifications non fusionnées - il la supprimera immédiatement.
Dans un scénario réel, vous utiliserez -d
la plupart du temps pour éviter de perdre du travail par accident. N'utilisez -D
que si vous êtes sûr à 100 % que le contenu de la branche n'est plus nécessaire.

Ashlyn Brooks est une rédactrice technique spécialisée dans les plateformes cloud (Azure, AWS), la documentation des API et l'infrastructure de données. Avec plus de sept ans d'expérience, elle excelle à traduire des concepts complexes en un contenu clair et convivial qui améliore l'expérience des développeurs et l'adoption des produits.
Apprenez-en plus sur Git avec ces cours !
Cours
Git intermédiaire
Cours