Olá!
Bem, muitas vezes no dia-a-dia com o git, você abre um branch para a feature, termina, faz merge na master e pronto! Está entregue. O problema é que com isso, seu git fica cheio de branches que são, digamos: INÚTEIS. E claro que com o tempo esses branches se reproduzem como coelhos.
Como fazer para apagar todos esses branches? Você deve ter percebido que apenas um git branch -D meu-branch
só apaga o branch no seu computador, e em nenhum remote.
Fácil, é só fazer o código git push origin :meu-branch
, que além de ser nem um pouco claro (WTF?), te obriga a fazer isso um a um. Se forem muitos branches, babau!
Mas agora seus problemas acabaram! Chegou o git-sweep! Olha lá o repositório... É um projeto para fazer o delete de todos os branches que já estão merged, ou seja, que não tem nenhum commit ahead.
É um projeto em Python, portanto terá que ter ele instalado na máquina e rodar:
$ pip install git-sweep || easy_install git-sweep
Depois disso é só rodar:
$ git-sweep preview
Fetching from the remote
These branches have been merged into master:
branch1
branch2
branch3
branch4
branch5
To delete them, run again with `git-sweep cleanup`
De dentro do seu repositório (claro). Com esse comando ele apenas te deu a lista dos branches merged. Despois disso para limpar é só fazer um:
$ git-sweep cleanup
Fetching from the remote
These branches have been merged into master:
branch1
branch2
branch3
branch4
branch5
Delete these branches? (y/n) y
deleting branch1 (done)
deleting branch2 (done)
deleting branch3 (done)
deleting branch4 (done)
deleting branch5 (done)
All done!
Tell everyone to run `git fetch --prune` to sync with this remote.
(you don't have to, yours is synced)
Pronto, seu remote está limpinho. 😁
Muito bom! Eu estava com algumas branchs muito antigas aqui e queria fazer um limpa nelas, o programa funcionou excelente. Após instalar o git-sweep ele não adiciona automaticamente o caminho dele no Path nas variáveis de ambiente, foi necessário fazer isso manualmente.