Supprimer les branches fusionnées dans Git
- Afficher les branches existantes dans Git
- Supprimer plusieurs branches fusionnées locales à la fois dans Git
- Supprimer les branches fusionnées locales et distantes dans Git
Dans Git, la création de branches est nécessaire pour travailler avec de nombreux membres de l’équipe. Les branches représentent des instantanés des modifications qui ont été apportées dans le passé dans Git.
Lorsque nous créons une nouvelle branche dans Git, elle est destinée à inclure les modifications que nous avons apportées pour corriger les bogues ou ajouter de nouvelles fonctionnalités.
Grâce à Git, nous pouvons facilement gérer les branches, que ce soit pour les créer ou les supprimer à l’aide de commandes. La suppression de branches n’est pas une exception dans Git.
De nombreux développeurs sont satisfaits lorsque leur référentiel Git est propre en supprimant les branches fusionnées, et ils sont faciles à utiliser pour le nouveau développement vers les branches existantes.
Examinons la suppression des branches qui ont déjà été fusionnées à l’aide des commandes suivantes dans Git.
Afficher les branches existantes dans Git
Avant de commencer à supprimer les branches existantes dans un référentiel, examinons toute la liste des branches en exécutant la commande suivante :
git branch
Pour voir la liste de toutes les branches distantes, nous allons exécuter la commande suivante :
git branch -r
Pour afficher la liste de toutes les branches (locales et distantes), nous allons exécuter la commande suivante :
git branch -a
À la suite de ces commandes, nous verrons une liste de branches. Toutes les branches que nous pouvons voir ne doivent pas être supprimées. Notre objectif est de nettoyer les branches déjà fusionnées.
Pour voir la liste de toutes les branches fusionnées locales, nous exécuterons la commande suivante :
git branch --merged
Pour afficher la liste de toutes les branches locales non fusionnées, nous exécuterons la commande suivante :
git branch --no-merged
Supprimer plusieurs branches fusionnées locales à la fois dans Git
Supprimer les branches une par une prend beaucoup plus de temps et n’est pas le bon travail. Bien sûr, nous sommes des développeurs, et nous ne préférons pas faire une tâche répétitive alors que nous pouvons la robotiser à l’aide de quelques commandes.
Comme nous l’avons vu dans la liste des branches fusionnées, il se peut que certaines branches ne soient pas supprimées à l’avenir. Donc pour cela, nous allons ajouter quelques arguments avec la commande pour supprimer toutes les branches fusionnées afin d’exclure les branches que nous ne voulons pas supprimer.
La commande suivante n’inclura pas la branche master
ni tout ce qui contient dev :
git branch --merged| egrep -v "(^\*|master|main|dev)"
Si nous voulons ignorer toute autre branche, nous ajouterons le nom comme suit :
git branch --merged| egrep -v "(^\*|master|main|dev|skip_branch_name)"
Supposons maintenant que nous voulions supprimer les branches locales existantes du référentiel déjà fusionnées dans le passé dans la branche actuellement extraite du référentiel. Dans ce cas, nous exécuterons la commande suivante :
git branch --merged | grep -i -v -E "master|dev"| xargs git branch -d
Supprimer les branches fusionnées locales et distantes dans Git
Pour supprimer une branche locale fusionnée, nous allons lancer la commande git branch
avec l’option -d
comme mentionné ci-dessous.
git branch -d <branch-name>
Si la branche locale n’est pas fusionnée, nous exécuterons la commande suivante :
git branch -D <branch-name>
Si on veut le supprimer de la télécommande, on exécutera la commande git push
avec l’option --delete
(ici, le nom de la télécommande est l’origine, qui est par défaut) :
git push --delete origin <branch-name>
Alternativement, nous pouvons également utiliser la commande suivante :
git push origin :<branch-name>
Après avoir supprimé la branche de la télécommande, nous allons élaguer pour éliminer les branches de suivi à distance avec la commande suivante :
git remote prune origin
Individuellement, nous pouvons également élaguer les branches de suivi à distance avec la commande suivante :
git branch -dr <branch-name>