El sprawl de branches es real
Después de seis meses en un proyecto activo, git branch puede listar docenas de branches muertos. La limpieza es un hábito mensual de cinco minutos.
Listar branches mergeados
git checkout main
git pull
git branch --merged
git branch --no-merged
Eliminación masiva de branches mergeados
git branch --merged main | grep -v -E '^\\*|^\\s*(main|master|develop)$' | xargs -n 1 git branch -d
Podar refs remote-tracking obsoletos
git fetch --prune
git config --global fetch.prune true
Encontrar branches sin upstream
git branch -vv | grep -v origin/
git for-each-ref --format='%(refname:short) %(upstream)' refs/heads
Detectar branches cuyos remotes han desaparecido
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'
El reflog es tu red de seguridad
git reflog | grep accidentally-deleted
git checkout -b accidentally-deleted <sha>