git clean branches

05/10/2023

Lister les branches

Quand on fait des branches on a vite fait d'en avoir pleins.

=> git branch -a
  activitybugpaginationandadduser
  apresprod
  ... // x50
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/activitybugpaginationandadduser
  remotes/origin/apresprod
  ... // x50

Lister les branches sans remote (pas encore pushées)

ps: si je crée une branche, ce scipt la fera aparaitre.
si je push cette branche ce script ne la listera plus.
si je supprime la branche du remote elle n'aparaitra toujours pas. (même si je fais git fetch -p)

git branch --format "%(refname:short) %(upstream)" | awk '{if (!$2) print $1;}'

Cleaner les remotes/origin/*

on peut dans un premier temps supprimer les références locales à des branches distantes qui ont été supprimées du remote. Donc concrêtement les remotes/origin/* qui aparaissent quand on fait git branch -a

git remote prune origin
or
git fetch -p

Clean les branches qui existent plus sur le remote

Ensuite pour supprime les branches locales qui n'existent plus sur le remote (méthode manuelle)

# supprime les branches mergées
git checkout master
git branch --merged | grep -v "master" | xargs git branch -d

# or

# supprime les branches supprimées sur le remote (gone)
git checkout master
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d

sinon ya cet outil qui semble bcp plus safe et interactif

npm install -g git-removed-branches

Après on appelle ça :

# affiche juste
git removed-branches
# clean
git removed-branches -p
# clean même quand la branche a pas été mergée
git removed-branches -p --force

supprimer une branche sur le remote

git push origin -d branchName