Skip to content
Latchkey

O que é uma feature branch?

Uma feature branch é uma linha separada de desenvolvimento onde você constrói uma mudança isoladamente antes de fazer merge de volta na branch principal.

Uma feature branch permite que você trabalhe em algo sem perturbar a branch main compartilhada até que esteja pronto. É um dos workflows Git mais comuns, e por quanto tempo essas branches vivem tem um grande efeito em quão suavemente a integração ocorre.

O que é

Uma feature branch é criada a partir da branch main para conter os commits de uma mudança específica, uma feature, uma correção, um experimento. O trabalho acontece ali isoladamente, então a branch main permanece estável. Quando o trabalho está completo e revisado, a branch faz merge de volta, geralmente via pull request.

Como faz merge de volta

  • Crie uma branch a partir da main para começar o trabalho.
  • Faça commit das mudanças na branch conforme avança.
  • Abra um pull request quando estiver pronto para review.
  • O CI roda na branch, e um par a revisa.
  • Faça merge na main assim que as verificações passarem e ela for aprovada.

Um exemplo

Um desenvolvedor cria uma branch chamada add-search, constrói uma feature de busca ao longo de alguns dias e abre um pull request. O CI a verifica, um colega a revisa, e ela faz merge na main. A branch main nunca foi quebrada pelo trabalho em andamento.

O trade-off: tempo de vida da branch

Feature branches de vida curta, mescladas dentro de um dia, são saudáveis. As de vida longa se afastam da main e se tornam dolorosas de mesclar, o "inferno de integração" que o CI foi inventado para evitar. Quanto mais tempo uma branch vive, maior e mais arriscado seu merge eventual. Manter branches pequenas e curtas é a disciplina chave.

Relação com CI e trunk-based development

Feature branches e integração contínua coexistem bem quando as branches são curtas e o CI roda a cada push. Trunk-based development é essencialmente a disciplina de manter feature branches extremamente curtas, frequentemente horas, para que a integração permaneça contínua em vez de adiada.

Principais conclusões

  • Uma feature branch isola trabalho até que ele esteja pronto para merge.
  • Branches de vida curta mantêm a integração fácil; as longas causam dor.
  • CI em cada branch mantém o merge eventual seguro.

Guias relacionados