La proliferazione di branch e reale
Dopo sei mesi su un progetto attivo, git branch puo elencare dozzine di branch morti.
Elencare branch fusi
git checkout main
git pull
git branch --merged
git branch --no-merged
Cancellazione in massa di branch fusi
git branch --merged main | grep -v -E '^\\*|^\\s*(main|master|develop)$' | xargs -n 1 git branch -d
Pruning di branch remote-tracking obsoleti
git fetch --prune
git config --global fetch.prune true
Trovare branch senza upstream
git branch -vv | grep -v origin/
git for-each-ref --format='%(refname:short) %(upstream)' refs/heads
Rilevare branch i cui remote sono spariti
git fetch --prune
git branch -vv | awk '/: gone]/{print $1}'
Un alias di pulizia
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'
Il reflog e la rete di sicurezza
git reflog | grep accidentally-deleted
git checkout -b accidentally-deleted <sha>