Supprimer une branche Git : Comment enlever des branches locales et distantes

Si vous êtes un utilisateur actif de Git comme moi, vous avez probablement accumulé un tas de vieilles branches. Certaines fusionnées, d’autres abandonnées, et certaines dont vous ne vous souvenez même pas d’avoir créées. Garder ces branches peut ne pas sembler être un gros problème, mais avec le temps, elles peuvent encombrer votre dépôt et rendre plus difficile le suivi des travaux actifs.

Dans ce guide, je vais expliquer comment supprimer des branches Git localement et à distance, en couvrant les façons les plus sûres de le faire et les pièges potentiels à éviter.

Que fait la suppression d’une branche Git ?

Les branches Git sont temporaires par conception. Elles 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 son rôle, la garder ne fait qu’ajouter un encombrement inutile. Supprimer des 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 que « effacer » votre travail. Lorsque vous supprimez une branche dans Git, vous n’effacez pas les commits, seulement la référence à ceux-ci. Voici comment cela fonctionne :

  • Suppression d’une branche locale supprime la branche de votre dépôt personnel. Si d’autres branches ou tags ne font pas référence à ces commits, ils peuvent éventuellement être nettoyés par la collecte des ordures de Git.
  • Supprimer une branche distante retire la branche du dépôt partagésitory (par exemple, GitHub, GitLab, Bitbucket), la rendant inaccessible aux collaborateurs. Cependant, toutes les copies locales de cette branche sur d’autres machines resteront jusqu’à ce qu’elles soient supprimées manuellement ou mises à jour.

Pourquoi supprimer une branche ?

Supprimer une branche est une bonne pratique de gestion, tout simplement. De la même manière qu’il est judicieux de supprimer des photos en double, des téléchargements anciens et des dossiers obsolètes, il y a plusieurs bonnes raisons de supprimer une branche une fois que vous en avez terminé avec :

  • Cela garde votre dépôt propre.Trop de branches, en particulier les anciennes, rendent plus difficile le suivi du travail actif.
  • Cela évite la confusion.Si une branche n’est plus pertinente, la conserver peut engendrer une incertitude quant à son utilisation.
  • Cela améliore la collaboration.Dans des environnements d’équipe, supprimer les branches de fonctionnalités terminées indique que le travail est terminé et empêche un travail inutile sur du code obsolète.
  • Il réduit le désordre des dépôts distants. Les dépôts distants peuvent devenir encombrés de branches obsolètes, rendant plus difficile la navigation dans l’historique du projet pour vous (ou un spectateur).

Si vous êtes nouveau sur Git ou si vous devez l’installer avant de gérer des branches, consultez le tutoriel d’installation de Git pour des instructions étape par étape.

Suppression d’une branche Git locale

Supprimer une branche locale n’est pas difficile ; heureusement, c’est l’une des tâches Git les plus simples. Passons en revue la manière la plus sûre de le faire et ce à quoi faire attention.

La commande de base pour supprimer une branche locale

La manière la plus sûre de supprimer une branche locale est d’utiliser le drapeau -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 actuelle (généralement main ou master). S’il y a des modifications non fusionnées, Git vous arrêtera pour éviter une perte de données accidentelle.

Suppression forcée d’une branche locale

Si vous essayez de supprimer une branche qui a encore des modifications non fusionnées, Git ne vous le permettra pas à moins que vous ne le forciez :

git branch -D <branch_name>

Le drapeau -D (remarquez la majuscule) saute la vérification de sécurité et supprime immédiatement la branche, qu’elle soit fusionnée ou non. Je vous conseillerais fortement de faire preuve de prudence avec cela. Tout travail non fusionné sera perdu à moins que vous n’ayez une sauvegarde ou une autre branche pointant vers les mêmes commits.

Vérification des modifications non fusionnées avant la suppression

Avant d’en arriver au point de supprimer une branche, il est judicieux de vérifier si elle a 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 celle que vous vous apprêtez à supprimer apparaît dans cette liste, vérifiez bien que vous n’avez pas besoin de ses modifications avant de continuer.

Vous voulez un résumé rapide des commandes Git, y compris la suppression de branches ? Téléchargez la pratique Fiche de Référence Git.

Suppression d’une Branche Git Distante

Supprimer une branche distante est un peu différent de la suppression d’une branche locale. Étant donné que les branches distantes existent dans des dépôts partagés, les supprimer aide à garder les choses organisées 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 dépôt distant, la rendant inaccessible aux autres. Cependant, toutes 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 la branche distante

Après avoir supprimé une branche distante, vous devrez confirmer qu’elle est réellement disparue. Tout d’abord, récupérez les dernières mises à jour du dépôt distant :

git fetch --prune

Cela supprime les références de suivi à distance obsolètes. Pour vérifier que la branche n’est plus listée, exécutez ce qui suit :

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 à nouveau git fetch --prune ou assurez-vous que la commande de suppression a été exécutée sur le bon dépôt distant.

Meilleures pratiques pour supprimer des branches Git

Supprimer des branches est une partie routinière du travail avec Git, mais le faire de la bonne manière peut vous éviter des maux de tête inutiles. Voici quelques bonnes pratiques pour garder votre dépôt organisé et éviter des erreurs potentielles.

Évitez de supprimer des branches non fusionnées prématurément

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 avec :

git branch --no-merged

Si la branche a des modifications précieuses qui n’ont pas été fusionnées, envisagez de les fusionner ou de les archiver d’abord au lieu de les supprimer directement.

Supprimez après fusion

Une fois qu’une fonctionnalité ou un correctif a été fusionné dans la branche principale (main ou master), il n’y a aucune raison de garder l’ancienne branche. Supprimer les branches fusionnées aide à éviter l’encombrement et facilite la visualisation des branches encore actives.

Communiquez avec votre équipe

En tant que courtoisie professionnelle, lorsque vous travaillez sur un projet collaboratif, évitez de supprimer une branche sans prévenir votre équipe. Cela peut causer de la confusion — ou, pire, perturber le travail de quelqu’un d’autre. Avant de supprimer une branche distante, vérifiez avec votre équipe pour vous assurer que personne ne l’utilise encore. Je préfère un simple message sur Slack ou une note pour éviter la frustration.

Avant de supprimer une branche, vous voudrez peut-être nettoyer votre historique de commits en les fusionnant. Découvrez comment dans notre tutoriel sur la fusion des commits Git.

Problèmes courants lors de la suppression de branches Git

Supprimer des branches dans Git est généralement sans problème, mais il existe quelques pièges courants qui peuvent vous faire trébucher. Voici ce à quoi faire attention et comment gérer ces problèmes s’ils se présentent.

Supprimer 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 une perte de données potentielle. C’est une sécurité. Tout travail non fusionné sera perdu si vous le supprimez de force avec -D.

Si vous avez déjà supprimé une branche et réalisez que vous en avez besoin, vous pouvez peut-être la récupérer en utilisant le reflog de Git :

git reflog git checkout -b <branch_name> <commit_hash>

Cela vous permet de restaurer la branche à partir de son dernier commit connu si elle n’a pas été complètement perdue à cause de la collecte des ordures.

Suppression de la branche actuelle

Git ne vous permettra pas de supprimer la branche sur laquelle vous vous trouvez actuellement, ce qui est logique sinon, vous seriez laissé sans branche active. Si vous voyez une erreur en essayant de supprimer une branche, changez d’abord pour 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 aviez l’intention de retirer.

Besoin de passer d’une branche à l’autre avant de supprimer une ? Notre guide sur comment vérifier une branche distante dans Git vous guide à travers le processus.

Supprimer accidentellement une branche distante

Si une branche distante a été supprimée par erreur, vous pouvez la restaurer (supposant que vous avez encore une copie locale) en la renvoyant au distant :

git push origin <deleted_branch_name>

Cela recrée la branche dans le dépôt distant, restaurant l’accès des collaborateurs. Si aucune copie locale n’existe, vous devrez peut-être vérifier manuellement votre historique de commits 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, revisitez les problèmes courants ; vérifiez si elle est complètement fusionnée, si vous êtes actuellement sur la branche ou si c’est une branche distante. À partir de là, cela peut être vos paramètres ou permissions.

  1. La première chose à vérifier est si vous êtes actuellement sur cette branche. Git ne vous permettra pas de supprimer une branche sur laquelle vous travaillez activement, donc vous devrez d’abord passer à une autre branche.
  2. Si ce n’est pas le problème, la branche pourrait encore avoir des modifications non fusionnées. Git protège les branches avec du travail non fusionné, donc à moins que vous soyez absolument sûr de ne pas avoir besoin de ces modifications, vous devrez fusionner ou forcer la suppression de la branche en utilisant git branch -D nom-de-branche.
  3. Si vous essayez de supprimer une branche distante, une simple git branch -d ne suffira pas. Au lieu de cela, vous devrez exécuter git push origin --delete nom-de-branche, et pour nettoyer les anciennes références, vous pouvez utiliser git fetch --prune
  4. 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 dépôt partagé, vous devrez peut-être également disposer des autorisations nécessaires pour supprimer des branches.

Vous êtes toujours bloqué ? Exécuter 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 d’essayer à nouveau.

Automatisation du nettoyage des branches avec Git

J’aime la bonne automatisation. Bien que la suppression manuelle des branches fonctionne bien et que vous devriez comprendre comment le faire, il existe une autre méthode. Si vous devez gérer de nombreuses branches (comme dans un cadre d’équipe), l’automatisation peut faire gagner du temps et garder les choses plus ordonnées. Git propose plusieurs façons de simplifier le nettoyage des branches, réduisant le désordre sans effort supplémentaire.

Automatiser le nettoyage des branches distantes

Lorsque qu’une branche distante est supprimée, votre Git local conserve encore une référence à celle-ci jusqu’à ce que vous mettiez les choses à jour manuellement. Au lieu de les nettoyer une par une, vous pouvez utiliser :

git fetch --prune

La commande ci-dessus supprime automatiquement les références locales aux branches qui n’existent plus dans le dépôt distant, gardant tout synchronisé. Exécuter cela régulièrement empêche les branches obsolètes de s’accumuler dans votre dépôt local.

Utilisez des hooks 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, comme après la fusion d’une branche. Vous pouvez configurer un hook post-fusion pour supprimer automatiquement les branches fusionnées après une période déterminée, garantissant ainsi que les anciennes branches ne traînent pas inutilement.

Conclusion

Les branches peuvent devenir désordonnées avec le temps, mais un peu de « taille » aide à garder votre dépôt propre et votre flux de travail efficace. En prenant l’habitude de supprimer les branches fusionnées, de vérifier celles non fusionnées et de garder la communication ouverte dans les projets d’équipe, vous pouvez éviter ces problèmes. Et si vous souhaitez aller plus loin, des outils d’automatisation comme git fetch --prune et les hooks Git peuvent aider à garder votre dépôt propre sans effort supplémentaire.

Supprimer des 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 intermédiaire sur Git. Si vous travaillez avec des dépôts GitHub, une bonne compréhension des concepts fondamentaux de GitHub est essentielle. En savoir plus dans le cours d’introduction aux concepts de GitHub !

Source:
https://www.datacamp.com/tutorial/git-delete-branch