Back to blog

Dominando Branches no Git: Criação, Gerenciamento e Exclusão

3 min de leitura
767 palavras

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 e restore 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:

  1. O Git baixa as últimas alterações da main
  2. 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.

  1. Vá para a sua branch:
git checkout feature/login
  1. Puxe com rebase:
git pull --rebase origin main
  1. Resolva conflitos, se houver:
# Corrige os arquivos
git add arquivo
git rebase --continue

Para cancelar:

git rebase --abort
  1. 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 ou rebase

Dica Extra

Antes de deletar uma branch remota, verifique se todas as alterações foram incorporadas na main.