GIT – Supprimer des branches locales et distantes

Logo Git

Pour chaque feature / fix de bug / .. je créé une branche différente. Au bout d’un certain temps les branches s’accumulent, pour gagner un peu de place et éviter de chercher sa branche pendant des heures il est nécessaire de faire un peu de ménage et donc de supprimer les vieilles branches. La suppression via un éditeur comme PhpStorm est simple. Il est aussi possible de les supprimer les branches Git locales et distantes en ligne de commande.

Suppression des branches GIT locales

Aillant plus d’une dizaine de branches, je me vois mal rechercher le nom de toutes les branches pour les supprimer une par une. Une simple ligne de commande suffit :

Dans l’exemple ci dessus, je change de branche pour me placer sur la master, que je mets à jour. Ensuite je ne souhaite supprimer que les branches mergées sur la master et j’exclus les branches appartenant à mon processus de développement (master / develop / release) via le grep -v -E  (expression rationnelle étendue).

 

Suppression des branches GIT distantes

Voici la commande à exécuter (attention à ce que vous faite ! ) :

Via un enchaînement de commande, il est possible de supprimer automatiquement toutes les branches qui ont déjà été mergées sur la master (option –merged master).

Explication de la ligne de commande :
Comme dans le cas d’une suppression en local, je ne souhaite pas supprimer mes branches appartenant à mon processus de développement.
Je commence par chechout la master et la mettre à jour. Il s’agit de la dernière branche de mon processus de développement et c’est la branche qui se trouve en production.
Le sed permet quand à lui de récupérer le nom de la branche, car le git branch -r --merged master  retourne quelque chose du genre origin/Bug-01 où Bug-01 est le nom de la branche. Via donc une expression régulière (option -e), je remplace origin/ par rien pour récupérer Bug-01.
Le xarg permet d’exécuter la commande de suppression d’une branche pour tous les résultats du git branch, et ceux un par un (option -n 1).
L’option -i permet d’utiliser le {} qui reprend le nom de la branche.


Commenter

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *