Supprimer toutes les branches locales dans Git

Ankit Raj Goyal 30 janvier 2023
  1. Script détaillé pour supprimer toutes les branches locales dans Git sauf master
  2. Modifier le script pour supprimer uniquement les branches fusionnées avec l’option -d dans Git
  3. Utiliser un script plus simple pour supprimer toutes les branches locales dans Git
  4. Modifier le script pour supprimer les branches locales avec des noms similaires à master comme master-prod dans Git
  5. un court script pour supprimer toutes les branches locales dans Git
  6. Commande de suppression définitive en une ligne pour supprimer toutes les branches locales dans Git
Supprimer toutes les branches locales dans Git

Les anciennes branches locales encombrent votre référentiel local mais n’apportent aucune valeur supplémentaire. Vous pouvez supprimer toutes les branches locales en une seule fois à l’aide de ce tutoriel.

Nous utilisons des commandes telles que grep, xargs et for-each-ref pour écrire des scripts pour cette tâche. Nous montrons différentes options pour différents cas d’utilisation.

Nous fournissons également un hack rapide en une ligne pour supprimer toutes les branches locales à la fin du didacticiel.

Script détaillé pour supprimer toutes les branches locales dans Git sauf master

Nous écrivons le script suivant pour que Git supprime toutes les branches locales à l’exception de la branche master.

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -D

Ce script supprimera toutes les branches locales à l’exception de la branche master, y compris les branches non fusionnées.

Décomposons ce script pour voir comment cela fonctionne.

  1. Le for-each-ref itère sur toutes les références du référentiel. La chaîne format '%refname:short' extrait un nom de ref court des itérables et les refs/heads pointent sur leur head.

    Nous passons la sortie de for-each-ref à la commande grep en utilisant le tube | opérateur.

  2. La commande grep recherche les têtes de référence qui lui sont transmises pour correspondre à la chaîne d’expression master\|main\|develop. Cela couvre différents noms pour votre branche master - vous les avez peut-être nommées main ou develop.

  3. L’option -v dans la commande grep est pour la sélection inversée. Par conséquent, il ne sélectionnera ici que les branches qui ne correspondent pas à l’expression master\|main\|develop - essentiellement, il sélectionne toutes les branches locales à l’exception du master.

  4. Enfin, la commande xargs prend toutes ces branches sélectionnées et les passe en arguments à la commande git branch -D. Le git branch -D est la commande pour forcer la suppression de toutes les branches passées en arguments.

script détaillé supprimer tous les locaux

Modifier le script pour supprimer uniquement les branches fusionnées avec l’option -d dans Git

Nous pouvons modifier le script ci-dessus pour supprimer uniquement les branches fusionnées. Nous remplaçons l’option -D à la fin par l’option -d.

Le -d est une option de suppression douce et ne supprime que les branches fusionnées.

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -d

branchs fusionnées non fusionnées

Nous voyons que first_branch est fusionné, mais second_branch n’est pas fusionné.

supprimer uniquement les branches fusionnées

Notre script modifié ne supprime que la first_branch fusionnée mais laisse la second_branch non fusionnée.

Utiliser un script plus simple pour supprimer toutes les branches locales dans Git

Certaines personnes peuvent trouver le script ci-dessus trop complexe et exagéré. Nous pouvons utiliser un script plus simple pour effectuer la même tâche.

git branch | grep -v "master\|main\|develop" | xargs git branch -D

Ce script remplace le complexe for-each-ref par la simple commande git branch.

Veuillez noter que Git ne recommande pas d’utiliser la branche git dans les scripts. Mais nous pouvons parfois nous écarter des bonnes pratiques pour une solution rapide.

petit script supprimer tous les locaux

Modifier le script pour supprimer les branches locales avec des noms similaires à master comme master-prod dans Git

Parfois, votre référentiel peut avoir des branches avec des noms similaires à master. Par exemple, certaines de vos branches pourraient avoir des noms comme master-prod ou master-draft.

Nous pouvons modifier l’expression régulière dans notre script de "master\|main\|develop" à "master$\|main$\|develop$" pour obtenir cette fonctionnalité.

git branch | grep -v "master$\|main$\|develop$" | xargs git branch -D

branche nom similaire master prod

supprimer la branche nom similaire master prod

un court script pour supprimer toutes les branches locales dans Git

Nous pouvons passer des expressions régulières astucieuses à grep pour raccourcir davantage notre script.

git checkout master
git branch | grep -v "^*" |xargs git branch -D

L’expression "^*" désigne toutes les branches commençant (^) par la branche courante (*). Nous avons d’abord fait git checkout master, donc notre branche actuelle est master.

Ainsi -v "^*" filtre notre branche actuelle, la master et supprime toutes les autres branches locales.

raccourci supprimer les branches locales

Commande de suppression définitive en une ligne pour supprimer toutes les branches locales dans Git

Enfin, comme promis, nous vous montrerons une commande de suppression définitive sur une seule ligne pour supprimer toutes les branches locales dans Git.

git branch -D $(git branch)

Cette commande supprime toutes les branches sauf celle sur laquelle vous vous trouvez.

suppression définitive d’une seule ligne

Article connexe - Git Branch