Gerenciar branches é uma das tarefas mais importantes no dia a dia de quem trabalha com Git.
Neste guia completo, você vai aprender como criar, trocar, atualizar e excluir branches, além de entender boas práticas para manter seu repositório sempre organizado.
Criando uma Nova Branch
Para criar uma nova branch no Git, você pode usar um dos seguintes comandos:
# Cria uma nova branch git branch nome-da-branch # Cria e muda imediatamente para a nova branch git checkout -b nome-da-branch
Mudar de branch
# Mudar para uma branch existente git checkout nome-da-branch # Criar e mudar para uma nova branch git checkout -b nova-branch # Criar uma nova branch a partir de outra branch específica git checkout -b nova-branch branch-origem
Reverter alterações em arquivos
# Descartar alterações em um arquivo específico git checkout -- arquivo.txt # Descartar alterações em todos os arquivos git checkout -- . # Reverter para uma versão específica de um arquivo git checkout hash-commit -- arquivo.txt
Comandos de navegação
# Voltar para o último commit da branch atual git checkout HEAD # Voltar para um commit específico (modo detached HEAD) git checkout hash-do-commit # Voltar para o estado anterior git checkout -
Operações avançadas
# Criar branch rastreando branch remota git checkout -b local-branch origin/remote-branch # Restaurar arquivo de um commit específico git checkout commit-hash -- caminho/arquivo
Git 2.23+ (comandos alternativos recomendados)
# Trocar de branch git switch nome-da-branch # Criar nova branch git switch -c nova-branch # Restaurar arquivo git restore arquivo.txt
📌 Resumo de boas práticas
- Use
git branch
para listar branches b
cria e já muda para a branch- Cuidado ao usar
checkout
para não perder trabalho não commitado - Em versões recentes, prefira
switch
erestore
pela clareza
Listando Branches
# Listar branches locais git branch # Listar branches remotas git branch -r # Listar todas (locais e remotas) git branch -a
Deletando Branches
Branch Local
# Deletar branch local git branch -d nome-da-branch # Forçar deleção mesmo sem merge git branch -D nome-da-branch # Apagar todas exceto a master git branch | grep -v "master" | xargs git branch -D
Branch Remota
# Método 1 git push origin --delete nome-da-branch # Método 2 git push origin :nome-da-branch
Atualizando sua branch com a main
Antes de abrir um Pull Request, é fundamental atualizar sua branch com as últimas alterações da main
.
Opção 1: Merge
git checkout sua-branch git fetch origin git merge origin/main
- Preserva o histórico exato
- Cria um commit de merge extra
Opção 2: Rebase (recomendado)
git checkout sua-branch git fetch origin git rebase origin/main
- Mantém o histórico linear
- Reaplica seus commits no topo da
main
- Mais limpo para revisar em Pull Requests
git pull --rebase origin main
Uma forma prática de juntar fetch
+ rebase
em um único comando:
git pull --rebase origin main
O que acontece:
- O Git baixa as últimas alterações da
main
- Reaplica seus commits locais em cima delas
Diferença: merge vs rebase
Antes:
A---B---C (main) \ D---E (feature)
🔹 Merge (git pull origin main
)
A---B---C-------F (main) \ / D-----E (feature)
🔹 Rebase (git pull --rebase origin main
)
A---B---C---D'---E' (feature)
- Merge mantém histórico real, mas polui o log
- Rebase deixa linear, mas reescreve commits
Passo a Passo Prático com Rebase
Exemplo: atualizar a branch feature/login
com a main
.
- Vá para a sua branch:
git checkout feature/login
- Puxe com rebase:
git pull --rebase origin main
- Resolva conflitos, se houver:
# Corrige os arquivos git add arquivo git rebase --continue
Para cancelar:
git rebase --abort
- Finalize: sua branch estará atualizada com histórico limpo.
git push --force-with-lease
após rebase
Se você já tiver feito push
da branch antes do rebase, vai precisar atualizar o remoto:
git push --force-with-lease
🔸 Diferença para --force
:
-force-with-lease
é mais seguro, pois garante que você não sobrescreva commits de outra pessoa acidentalmente.
Boas Práticas
- Sempre verifique se não está na branch que vai deletar
- Tenha certeza de que as alterações foram mescladas antes de apagar
- Prefira
rebase
antes de PRs para evitar commits desnecessários - Combine com o time se o fluxo é com
merge
ourebase
Dica Extra
Antes de deletar uma branch remota, verifique se todas as alterações foram incorporadas na main
.