Artigos

Git Flow

Cenários comuns

Ambiente Branch
Produção Em produção (master)
Homologação Versão candidata (sta)
Desenvolvimento Desenvolvimento atual (dev)

Como este é um exemplo, ele pode ser diferente da realidade.

O que o produto espera do seu código

Se você segue um cenário parecido com o exemplo, provavelmente sabe que não pode simplesmente adicionar funcionalidades à master nem publicar correções urgentes na master sem integrá-las à staging, ou vice-versa. Por isso, precisamos seguir uma série de passos antes de publicar novas funcionalidades ou correções urgentes.

Adicionar uma funcionalidade

  • Atualize dev, comece a programar e depois envie a branch para o repositório remoto.
  • De tempos em tempos, faça a integração com staging e o deploy.
  • Se algo não funcionar em staging, corrija nessa branch.
  • Se tudo funcionar em staging, integre e envie as alterações para master e faça o deploy em produção.

Um erro em produção!

  • Passe para a branch master, corrija o erro e então… envie as alterações para master e integre master em staging e development para que essas branches também fiquem livres do erro.

Melhorar esse fluxo

Como Staging é nosso servidor para testar novas funcionalidades… A branch sta é nossa próxima versão a ser publicada, ou branch de versão candidata.

Introduzir um fluxo para funcionalidades

  • Crie uma nova branch baseada em staging.
  • Se precisar colaborar, envie a branch da funcionalidade para origin.
  • Quando estiver pronta, integre-a em staging.
  • Depois, exclua a branch da funcionalidade.

Introduzir um fluxo para correções urgentes

  • Uma correção urgente é uma solução que precisa ser aplicada em produção.
  • Crie uma nova branch baseada em master.
  • Programe a correção e integre-a em master e sta.
  • Depois das duas integrações, exclua a branch da correção urgente.

Até aqui…

Se seguirmos cada passo, estaremos usando um bom fluxo de trabalho.

Mas a criação, integração e exclusão das branches de funcionalidades e correções urgentes podem ser automatizadas.

git-flow

Git Flow é uma extensão do Git. Foi criado para seguir esses passos sem complicações.

Instalar git-flow

No Linux: sudo apt-get install git-flow

No Mac: brew install git-flow

Inicializar git-flow em um projeto existente

Execute git flow init no projeto.

Você será perguntado sobre o comportamento a seguir ao criar branches e sobre como definir a finalidade de cada uma.

Não importa em qual branch você esteja agora; apenas lembre-se de manter as branches master e sta atualizadas.

Criar uma funcionalidade com Git Flow

git flow feature start <FeatureName>
-- code a little bit
git add .
git commit -m “This is a good commit”
git flow feature finish <FeatureName>

Criar uma correção urgente com Git Flow

git flow hotfix start <HotfixName>
-- code the fix
git add .
git commit -m “This is an awesome fix”
git flow hotfix finish <HotfixName>

Conclusão

Usar git-flow melhora a forma de manter o código e também ajuda a equipe a seguir o mesmo fluxo e a evitar erros dos novos integrantes enquanto aprendem. Git Flow é uma convenção e pode ser adaptado às suas necessidades: basta criar sua própria cópia.

Slides em: https://speakerdeck.com/rec/git-flow

Nota: este artigo não pretende abordar os fundamentos do git-flow nem ser um tutorial de uso. É uma introdução ao assunto e, talvez, um convite para utilizá-lo.

“Git Flow” por Rodrigo Espinosa está sob a licença CC BY SA. Os exemplos de código-fonte estão sob a licença MIT.

Foto da sophilabs.

Classificado em Palestras.

Leituras relacionadas