Criando, alternando e deletando branches
1. Introdução às branches no Git
No Git, uma branch é essencialmente um ponteiro móvel para um commit específico dentro do histórico do repositório. Imagine uma linha do tempo do seu projeto: cada commit representa um ponto nessa linha, e uma branch é como um marcador que aponta para um desses pontos. Quando você faz um novo commit, a branch automaticamente avança para apontar para o novo commit.
Branches são fundamentais para o fluxo de trabalho moderno de desenvolvimento de software. Elas permitem que desenvolvedores trabalhem simultaneamente em diferentes funcionalidades, correções de bugs ou experimentos sem interferir no código principal. Cada branch funciona como um ambiente isolado, onde você pode fazer alterações sem afetar outras partes do projeto.
Os comandos básicos que você precisa conhecer são:
- git branch – gerencia branches (cria, lista, deleta)
- git checkout – alterna entre branches (modo clássico)
- git switch – alterna entre branches (modo moderno, Git 2.23+)
2. Criando uma nova branch
Para criar uma nova branch a partir do commit atual (onde você está agora), use:
git branch minha-nova-branch
Isso cria um novo ponteiro chamado minha-nova-branch apontando para o mesmo commit da branch atual. Você permanece na branch original até alternar explicitamente.
Para criar uma branch a partir de um commit específico, use:
git branch minha-branch <hash-do-commit>
Por exemplo:
git branch feature-correcao a1b2c3d4
Para criar e já alternar para a nova branch em um único comando, você tem duas opções:
- Modo clássico:
git checkout -b minha-nova-branch
- Modo moderno (Git 2.23+):
git switch -c minha-nova-branch
Ambos criam a branch e imediatamente fazem o checkout para ela, economizando um passo.
3. Alternando entre branches
Alternar entre branches é uma operação comum no dia a dia. O método clássico é:
git checkout nome-da-branch
Por exemplo:
git checkout main
A partir do Git 2.23, foi introduzido o comando git switch, que é mais intuitivo e seguro:
git switch nome-da-branch
git switch main
Cuidados ao alternar: Se você tiver mudanças não commitadas no diretório de trabalho, o Git pode se recusar a alternar para evitar perda de dados. Isso é chamado de "conflito de checkout". Para resolver, você pode:
- Fazer commit das mudanças:
git commit -m "mensagem" - Guardar temporariamente:
git stash - Descartar mudanças:
git restore .(cuidado, isso perde as alterações)
4. Visualizando branches existentes
Para listar todas as branches locais no seu repositório:
git branch
A branch atual será destacada com um asterisco (*):
* main
feature-login
bugfix-correcao
Para ver branches remotas (que existem no servidor):
git branch -r
Para ver todas as branches (locais e remotas):
git branch -a
Para identificar rapidamente a branch atual:
git branch --show-current
Ou use git status para ver informações mais detalhadas, incluindo a branch atual:
git status
5. Deletando branches locais
Para deletar uma branch que já foi mesclada (merged) na branch atual ou em outra branch:
git branch -d nome-da-branch
Se a branch não foi mesclada e você tem certeza que quer deletá-la, force a deleção:
git branch -D nome-da-branch
Para verificar quais branches já foram mescladas na branch atual:
git branch --merged
Para ver branches que ainda não foram mescladas:
git branch --no-merged
Exemplo prático:
git branch --merged
* main
feature-concluida
git branch -d feature-concluida
Deleted branch feature-concluida (was a1b2c3d).
6. Deletando branches remotas
Para deletar uma branch no repositório remoto:
git push origin --delete nome-da-branch
Alternativamente, você pode usar a sintaxe abreviada:
git push origin :nome-da-branch
O : antes do nome da branch indica "nada" para o lado direito, efetivamente deletando a branch remota.
Após deletar branches remotas, é boa prática sincronizar suas referências locais:
git remote prune origin
Isso remove as referências locais a branches remotas que não existem mais no servidor.
7. Renomeando branches
Para renomear a branch atual em que você está:
git branch -m novo-nome
Para renomear uma branch específica (não precisa estar nela):
git branch -m nome-antigo novo-nome
Renomear uma branch remota é um processo de duas etapas: deletar a antiga e enviar a nova:
git branch -m nome-antigo novo-nome
git push origin --delete nome-antigo
git push origin -u novo-nome
8. Boas práticas e erros comuns
Boas práticas de nomeação:
- Use prefixos para identificar o tipo de trabalho:
feature/,bugfix/,hotfix/,release/ - Exemplos:
feature/login-oauth,bugfix/corrige-css,hotfix/security-patch - Mantenha nomes descritivos mas concisos
- Use hífens ou barras para separar palavras, evite espaços
Erros comuns:
- Tentar deletar a branch atual: O Git não permite deletar a branch em que você está. Você receberá o erro:
error: Cannot delete branch 'main' checked out at '/caminho/do/projeto'
Solução: alterne para outra branch antes de deletar.
-
Criar branches com nomes duplicados: O Git permite, mas causa confusão. Sempre verifique branches existentes com
git branch. -
Esquecer de mesclar antes de deletar: Use
git branch --mergedpara verificar antes de deletar.
Fluxo recomendado:
- Crie uma branch para cada tarefa:
git switch -c feature/nova-funcionalidade - Trabalhe e faça commits regularmente
- Quando terminar, mescle (merge) na branch principal
- Delete a branch local e remota após mesclada
- Mantenha o repositório limpo com
git remote prune origin
Dominar a criação, alternância e deleção de branches é essencial para um fluxo de trabalho eficiente com Git. Pratique esses comandos regularmente e você ganhará confiança no gerenciamento de branches.
Referências
- Documentação oficial do Git - Branch — Referência completa do comando
git branch, incluindo todas as opções de criação, listagem e deleção. - Documentação oficial do Git - Switch — Guia oficial do comando
git switch, introduzido no Git 2.23 para alternar entre branches. - Atlassian - Git Branching Tutorial — Tutorial completo sobre branches no Git, com exemplos práticos de criação, merge e deleção.
- GitHub - Gerenciando branches — Guia do GitHub sobre como gerenciar branches em repositórios remotos.
- Git Tower - Learn Git Branching — Recurso interativo para aprender comandos de branches com exemplos visuais e práticos.
- FreeCodeCamp - Git Branching Explained — Explicação detalhada dos comandos de branching no Git, com exemplos de código e cenários comuns.