L'éparpillement de branches est réel
Après six mois sur un projet actif, git branch peut lister des dizaines de branches mortes. Le nettoyage est une habitude mensuelle de cinq minutes.
Lister les branches mergées
git checkout main
git pull
git branch --merged
git branch --no-merged
Suppression en masse des branches mergées
git branch --merged main | grep -v -E '^\\*|^\\s*(main|master|develop)$' | xargs -n 1 git branch -d
Élaguer les refs remote-tracking obsolètes
git fetch --prune
git config --global fetch.prune true
Trouver les branches sans upstream
git branch -vv | grep -v origin/
git for-each-ref --format='%(refname:short) %(upstream)' refs/heads
Détecter les branches dont les remotes ont disparu
git fetch --prune
git branch -vv | awk '/: gone]/{print $1}'
Un alias de cleanup
git config --global alias.cleanup '!git fetch --prune && git branch --merged main | grep -v -E "^\\*|^\\s*(main|master|develop)$" | xargs -n 1 git branch -d'
Le reflog est votre filet de sécurité
git reflog | grep accidentally-deleted
git checkout -b accidentally-deleted <sha>