Détails
Comment puis-je supprimer toutes les branches Git qui ont été fusionnées ?
J'ai de nombreuses branches Git. Comment puis-je supprimer les branches qui ont déjà été fusionnées ? Existe-t-il un moyen simple de les supprimer toutes au lieu de les supprimer une par une ?
1767
3
UPDATE :
Vous pouvez ajouter d'autres branches à exclure comme master et dev si votre flux de travail les a comme ancêtre possible. En général, je me branche à partir d'une balise "sprint-start" et master, dev et qa ne sont pas des ancêtres.
D'abord, listez toutes les branches qui ont été fusionnées à distance.
Vous pouvez voir quelques branches que vous ne voulez pas supprimer. Nous pouvons ajouter quelques arguments pour sauter des branches importantes que nous ne voulons pas supprimer comme master ou dev. La commande suivante va sauter la branche master et tout ce qui contient dev.
Si vous voulez sauter, vous pouvez l'ajouter à la commande egrep comme suit. La branche
skip_branch_name
ne sera pas supprimée.Pour supprimer toutes les branches locales qui sont déjà fusionnées dans la branche actuellement extraite :
Vous pouvez voir que master et dev sont exclues au cas où elles seraient un ancêtre.
Vous pouvez supprimer une branche locale fusionnée avec :
Si elle n'est pas fusionnée, utilisez :
Pour l'effacer de la télécommande dans les anciennes versions de Git, utilisez : {{92457}} :
Dans les versions plus récentes de Git, utilisez :
Une fois que vous avez supprimé la branche du distant, vous pouvez élaguer pour vous débarrasser des branches de suivi du distant avec :
ou élaguer des branches de suivi à distance individuelles, comme le suggère l'autre réponse, avec :
J'espère que cela vous aidera.
J'utilise le script Ruby suivant pour supprimer mes branches locales et distantes déjà fusionnées. Si je le fais pour un dépôt avec plusieurs branches distantes et que je ne veux supprimer qu'une seule d'entre elles, j'ajoute simplement une instruction de sélection à la liste des branches distantes pour n'obtenir que celles que je veux.
Il n'y a pas de commande dans Git qui fasse cela pour vous automatiquement. Mais vous pouvez écrire un script qui utilise les commandes de Git pour vous donner ce dont vous avez besoin. Cela peut être fait de plusieurs façons, en fonction du modèle de branchement que vous utilisez.
Si vous avez besoin de savoir si une branche a été fusionnée dans master, la commande suivante ne donnera aucun résultat si myTopicBranch a été fusionnée (c'est-à-dire que vous pouvez la supprimer)
Vous pouvez utiliser la commande Git branch et analyser toutes les branches en Bash et faire une boucle
for
sur toutes les branches. Dans cette boucle, vous vérifiez avec la commande ci-dessus si vous pouvez supprimer la branche ou non.