Git clean up

Leia em: 2 minutos

Depois de um certo tempo trabalhando com branchs em um repositório Git, os branchs tornam-se desatualizados e confusos. Sendo assim temos três tipos de branchs para verificarmos:

  • Branchs locais: Muito utilizadas no dia a dia
  • Referências para branchs remotas: Itens como origin/branch-name
  • Branchs remotas: Branchs no servidor remoto (Ex: Github, Bitbucket, Gitorius)

Neste tutorial vou supor que sua branch principal seja a master. Todos as branchs (develop, release entre outras) são mescladas na branch principal.

Branchs locais

Vamos listar todas as branchs locais:

git branch

Nós podemos listar todas as branchs que já foram mescladas com a branch principal da seguinte maneira:

git checkout master
git branch --merged

E para remover as branchs locais que já foram mescladas, basta executar este comando:

git branch -d name-your-branch-merged

Em seguida podemos listar todas as branchs que ainda não foram mescladas com a branch principal:

git branch --no-merged

Caso alguma branch listada tenha sido abandonada, você pode simplemente deletá-la com a opção -D:

git branch -D name-your-branch-abandoned

Referências para branchs remotas

Após executar git pull ou git fetch o Git cria referências das branchs remotas no repositório local, mas as referências que já foram deletadas remotamente não são removidas localmente, sendo assim, há possibilidades das branchs locais ficarem obsoletas.

Liste todas as branchs remotas:

git branch -r

Para limpar todas as referências antigas, basta executar:

git remote prune origin

Dicas

É sempre bom se manter atualizado com o repositório online:

git fetch -p

Mas não se esqueça de inserir a opção -p, ela resolve os problemas das branchs que ficaram obsoletas ao atualizar as referencias remotas com as locais. E para remover todas as branchs locais que já foram mergeadas, com apenas um comando, execute:

git branch --merged | grep -v "\*" | grep -v master | grep -v dev | xargs -n 1 git branch -d

Este comando é grande para memorizar ou ficar digitando sempre. Para facilitar basta criar um arquivo binário da seguinte maneira:

Se estiver em um OSx

sudo wget -O /bin/git-clean-up https://gist.githubusercontent.com/SauloSilva/4b13902db1135849a8c9/raw/8febb88a14fc9f09c9235e4f1749301e8fd81e33/git-clean-up
sudo chmod +x /bin/git-clean-up

Se estiver no Linux

sudo wget -O /usr/bin/git-clean-up https://gist.githubusercontent.com/SauloSilva/4b13902db1135849a8c9/raw/8febb88a14fc9f09c9235e4f1749301e8fd81e33/git-clean-up
sudo chmod +x /usr/bin/git-clean-up

Da próxima vez que precisar fazer uma limpeza é so executar:

git clean-up

ou

git clean-up name-your-main-branch

Sendo assim ficou simples manter as branchs organizadas.

Veja mais posts sobre:
git

Comentários:

Deixe sua dúvida, sugestão ou crítica, estou ansioso para saber tudo o que você achou sobre este post:
Saulo Santiago