Guia Completo sobre Ramificações no Git: Criar, Alternar, Excluir
Aprenda a criar, alternar, rastrear, organizar e excluir com segurança ramificações do Git em fluxos de trabalho diários de desenvolvimento.
Guia Completo sobre Ramificações no Git: Criar, Alternar, Excluir
As ramificações no Git permitem que você trabalhe em uma funcionalidade, correção ou experimento sem perturbar a linha principal de desenvolvimento. Um bom hábito de ramificação mantém suas alterações organizadas e torna as revisões, testes e reversões muito mais fáceis.
As ramificações são ponteiros leves para commits. Isso significa que criar, alternar e excluí-las é rápido, mas as escolhas que você faz ainda afetam a clareza do histórico do seu projeto.
O que é uma Ramificação no Git
Uma ramificação no Git é um nome móvel que aponta para um commit. Quando você faz commit de um novo trabalho em uma ramificação, o Git move esse nome de ramificação para frente, para o novo commit.
A maioria dos projetos tem uma ramificação principal, como main ou master. As equipes geralmente mantêm essa ramificação estável e criam ramificações de curta duração para trabalhos específicos:
git switch -c fix-login-timeout
Isso cria uma nova ramificação e alterna para ela. Exemplos mais antigos do Git podem usar:
git checkout -b fix-login-timeout
Ambos os padrões são comuns, mas git switch é mais fácil de ler porque foca apenas no movimento da ramificação.
Os nomes das ramificações devem ser específicos o suficiente para explicar o trabalho. feature é muito vago. feature/add-health-check-endpoint ou fix/nginx-502-upstream-timeout é muito melhor. Um nome claro ajuda você e seus revisores a entender a ramificação antes mesmo de abrir qualquer arquivo.
Criando e Alternando Ramificações
Antes de criar uma ramificação, comece a partir da base correta. Para a maioria das equipes, isso significa atualizar sua ramificação principal primeiro:
git switch main
git pull
git switch -c feature/add-metrics-endpoint
Isso reduz a chance de sua nova ramificação começar a partir de código desatualizado. Não elimina conflitos, mas fornece um ponto de partida mais limpo.
Para listar ramificações locais, execute:
git branch
A ramificação atual tem um asterisco ao lado. Para ver também as ramificações remotas, use:
git branch -a
Para alternar para uma ramificação existente:
git switch nome-da-ramificacao
Se a ramificação existir apenas no remoto, você geralmente pode criar uma ramificação de rastreamento local com:
git switch --track origin/nome-da-ramificacao
O rastreamento é importante porque conecta sua ramificação local à sua contraparte remota. Uma vez configurado o rastreamento, comandos simples como git pull e git push sabem qual ramificação remota usar.
Para um cenário concreto, imagine que você precisa corrigir uma falha no pipeline Jenkins enquanto também trabalha em uma limpeza maior de imagens Docker. Coloque essas alterações em ramificações separadas. A correção urgente pode ser revisada e mesclada rapidamente, enquanto a limpeza maior pode continuar sem bloqueá-la.
Para conceitos básicos relacionados, veja primeiros passos com repositórios Git.
Mantendo Ramificações Organizadas
As ramificações ficam bagunçadas quando ficam abertas por muito tempo ou acumulam alterações não relacionadas. A melhor ramificação geralmente é pequena, focada e fácil de revisar.
Use uma ramificação para um propósito:
- Uma ramificação de correção de bug deve incluir a correção e quaisquer testes relacionados.
- Uma ramificação de funcionalidade deve incluir a funcionalidade, não refatorações de passagem.
- Uma ramificação de limpeza deve evitar mudanças de comportamento, a menos que façam claramente parte da limpeza.
Antes de enviar, verifique seu trabalho:
git status
git diff --staged
Isso captura arquivos acidentais e edições não relacionadas. É especialmente útil em repositórios de DevOps onde arquivos gerados, configuração local e modelos de segredos podem estar próximos a arquivos de código fonte reais.
Quando sua ramificação precisar das alterações mais recentes de main, você tem duas opções comuns:
git merge main
ou:
git rebase main
Merge preserva o histórico exato da ramificação. Rebase reescreve seus commits da ramificação sobre a base mais recente. Ambos são úteis, mas as equipes devem concordar sobre qual estilo esperam antes de mesclar trabalho compartilhado. Se você não tiver certeza, prefira o fluxo de trabalho documentado pelo seu projeto.
Excluindo Ramificações com Segurança
Excluir ramificações antigas mantém seu repositório mais fácil de navegar. Após uma ramificação ter sido mesclada, exclua a cópia local com:
git branch -d nome-da-ramificacao
O -d minúsculo é a opção mais segura. O Git se recusa a excluir a ramificação se acreditar que o trabalho não foi mesclado.
Se você realmente precisar excluir uma ramificação local não mesclada, use:
git branch -D nome-da-ramificacao
Use isso com cuidado. Ele remove o nome da ramificação mesmo que os commits não estejam mesclados. Os commits ainda podem ser recuperáveis por um tempo através do reflog, mas você não deve tratar isso como uma rede de segurança normal.
Para excluir uma ramificação remota:
git push origin --delete nome-da-ramificacao
Exclua ramificações remotas apenas quando o trabalho for mesclado, abandonado ou claramente de sua propriedade. Em equipes compartilhadas, ramificações remotas podem ser usadas por revisões, pré-visualizações de implantação ou outros desenvolvedores.
Você pode limpar referências de rastreamento remoto obsoletas com:
git fetch --prune
Isso remove referências locais a ramificações remotas que não existem mais no servidor. Não exclui ramificações remotas reais.
Quando Perguntar a um Colega de Equipe
Criação e alternância de ramificações são operações de baixo risco. Os momentos arriscados são excluir trabalho não mesclado, forçar push e fazer rebase em ramificações que outras pessoas podem já estar usando.
Pergunte antes de fazer force push para uma ramificação compartilhada. Também pergunte antes de excluir uma ramificação remota que você não criou. Em repositórios com CI/CD intensivo, uma ramificação pode acionar builds, pré-visualizações ou regras de implantação que não são óbvias apenas pelo Git.
Uma boa ramificação é principalmente sobre clareza. Crie uma ramificação a partir da base correta, nomeie-a de acordo com o trabalho, mantenha-a focada e exclua-a quando não for mais necessária. Esses hábitos tornam o Git mais fácil para você e mais seguro para toda a equipe.