< Insights

Git Flow: como funciona e quais as vantagens desse fluxo de trabalho

  • Desenvolvimento de Software
  • Artigo

O gerenciamento e a organização dos fluxos de trabalho no desenvolvimento de software é um dos desafios para empresas que buscam agilidade e consistência nos projetos. Por isso, ao longo dos anos, foram criadas diversas alternativas para um sistema de controle de versão eficiente no compartilhamento, acesso e modificação de códigos entre os desenvolvedores. Um desses modelos é o Git Flow, que tem como objetivo simplificar o processo de desenvolvimento e organização das ramificações do projeto.

Nesse artigo, você entende como funciona o Git Flow e quais as vantagens que esse fluxo de trabalho propõe.

O que é Git Flow?

Git Flow é um modelo de fluxo de trabalho que busca simplificar e organizar o versionamento de ramificações de um projeto de desenvolvimento no Git. Essa estratégia foi popularizada em 2010 por Vincent Driessen e é uma abordagem alternativa ao Trunk Based Development

O Git Flow pode ser utilizado em qualquer projeto de software e está alinhado à prática de DevOps de entrega contínua. Nesse sentido, o Git Flow atribui funções bem específicas para diferentes ramificações e define quando elas devem interagir. Além disso, conta com ramificações individuais para preparar, manter e registrar lançamentos.

Como funciona o Git Flow?

O Git Flow funciona através do uso de ramificações (branches) do projeto, logo, pode ser comparado a uma árvore com seus galhos. Nesse fluxo de trabalho, as branches podem ser divididas em três tipos: principal (main), intermediária (develop) e as de suporte (Feature, Release e Hotfix), que são descartadas após cumprirem seu propósito. Para cada uma delas, existem algumas regras específicas que precisam ser seguidas para manter a otimização do versionamento:

  • Main: é a ramificação principal que contém o código-fonte em produção. Não é permitido realizar alterações (commit) diretamente nessa ramificação. A Master ainda é utilizada para enviar os commits dos releases para a produção;
  • Develop: criada a partir da ramificação Main, ela reúne os códigos de todos os ramos e se comunica com a Main. Ela contém o código-fonte mais atual e todas as novas features estáveis que serão mescladas posteriormente;
  • Feature: criada a partir da ramificação Develop, é uma branch temporária que carrega uma nova funcionalidade para o projeto, ela sempre acabará sendo mesclada à própria Develop através de merge. E segue um padrão de nomenclatura “feature/new-feature”.
  • Release: é uma ramificação temporária que fará com que os novos recursos armazenados na Develop sejam mesclados na branch Master, recebendo uma tag que indica a nova versão do projeto.
  • Hotfix: é uma ramificação utilizada para mesclar correções na ramificação principal decorrente de bugs identificados no processo de desenvolvimento. Após a correção do bug, o código irá tanto para a branch main como para a Develop. Essa branch também recebe uma tag indicando a nova versão na Main.

Quais as vantagens e desvantagens

O Git Flow tem suas vantagens e desvantagens, assim como todos os outros fluxos de trabalho. Logo, é preciso analisar o workflow que mais combina com o projeto. Conheça algumas vantagens abaixo:

  • É um fluxo de trabalho que preza por organização e praticidade;
  • Torna o processo de desenvolvimento mais intuitivo;
  • Resolve problemas e bug no código de maneira instantânea;
  • Facilita a colaboração entre a equipe e o acesso ao progresso individual.

Por outro lado, existem algumas desvantagens:

  • Apesar de buscar ser prático, pode se tornar um fluxo de trabalho complicado e longo, dependendo do projeto;
  • Exige conhecimento prévio e treinamentos em projetos grandes para manter sua fluidez.

Quer entender qual o fluxo de trabalho ideal para determinado projeto? Ou entender como DevOps pode impulsionar as entregas da sua empresa? Converse com nossos especialistas e conheça os serviços e consultorias oferecidos pela Objective!

Insights do nosso time

Obtenha insights do nosso time de especialistas sobre metodologias de desenvolvimento de software, linguagens, tecnologia e muito mais para apoiar o seu time na operação e estratégia de negócio.