Se você já trabalha ou deseja trabalhar na área de desenvolvimento, certamente você sabe o que é GitFlow. Porém, se você nunca ouviu falar desse modelo de ramificação do Git que ajuda a melhorar o fluxo de trabalho (workflow), este artigo é para você.
Nele, vamos explicar o que é o GitFlow, como usar, as vantagens e os tipos de branches. Continue a leitura e tire todas as dúvidas!
O que é GitFlow?
O GitFlow é um modelo de fluxo de trabalho criado para o Git a partir da estratégia de ramificação. Ele tem como objetivo principal facilitar o processo de desenvolvimento com uma série de novos comandos e melhorar as organizações das ramificações (branches) dentro do repositório.
Em resumo, o GitFlow foi pensado para quem deseja isolar o seu trabalho em diferentes ramificações do Git e assim conseguir realizar um melhor gerenciamento de projetos, em especial os projetos maiores.
Como surgiu
O modelo foi publicado pela primeira vez em 2010 pelo engenheiro de software holandês, Vincent Driessen, com o propósito de ajudar equipes de desenvolvimento de software a melhorarem os seus fluxos de trabalho.
Na publicação da Nvie sobre o GitFlow, Driessen explica que o GitFlow consiste em “um conjunto de procedimentos que cada membro da equipe deve seguir para chegar a um processo de desenvolvimento de software gerenciado”.
Para que serve o GitFlow?
O GitFlow funciona como um modelo simples que facilita a compreensão e permite que os membros da equipe consigam, de forma coletiva, desenvolver os processos de ramificação e liberação das mesmas.
Ele serve para melhorar o fluxo de trabalho. Além disso, é muito indicado para projetos longos porque com ele é possível atribuir funções específicas às ramificações e definir como elas devem interagir.
Uma outra funcionalidade do GitFlow é que com ele você pode criar ramificações individuais sem correr riscos de alterar a versão original.
Como funciona o GitFlow?
O método GitFlow funciona a partir de branchs, que são ramificações montadas em um modelo gráfico que parece uma árvore com diversos galhos.
Cada fluxo do GitFlow possui cinco ramificações que durante o desenvolvimento do projeto se integram uma à outra constantemente. São elas: Master, Develop, Feature, Hotfix e Release.
Confira o modelo de fluxo original do GitFlow que é utilizado pelo criador do método, o holandês Vincent Driessen:
Tipos de branches do fluxo GitFlow
Agora que você já sabe que existem cinco branches, você precisa saber como cada um funciona para entender porque as ramificações facilitam a compreensão e a categorização dos projetos.
Abaixo, listamos os cinco tipos de branches, como cada uma funciona e quais são as suas regras.
Branches principais
O workflow do GitFlow trabalha com duas branches principais que possuem vida útil infinita.
1. Branch Master/Main
A branch Master é o principal branch de qualquer projeto. É nela que o código-fonte está inserido e onde as novas atualizações que estão sendo desenvolvidas serão mescladas após a sua conclusão.
Com isso, consideramos que a branch master reflete sempre um estado pronto para produção. Afinal, ela é o espelho do programa ou software que já está no ar.
Uma outra informação importante em relação a Main é que a única forma de interagir com ela é através do Hotfix ou do Release.
2. Branch Develop
A segunda branch é a ramificação principal onde o código-fonte serve como uma linha do tempo para os últimos desenvolvimentos que ainda não foram testados. Ou seja, a Develop é uma cópia da branch Master que recebe primeiro as atualizações que logo serão incorporadas a Master.
Branches de suporte
Além dos branches principais, o modelo de desenvolvimento do GitFlow conta também com branches de apoio temporárias. Esses branches possibilitam à equipe trabalhar em conjunto em tempo real de onde estiverem, facilita na solução de problemas e também no rastreamento de recursos.
1. Branch Feature
As ramificações de recursos, ou branches Features, são utilizadas para desenvolver novos recursos para futuras versões do software.
A Feature existe apenas enquanto o recurso está em desenvolvimento. A partir do momento que os ajustes são finalizados, ela é incorporada no Develop para os testes antes de ser implementada na Master, reencaminhada para ajustes ou definitivamente descartada.
Para facilitar o trabalho, existe uma convenção que esses branches devem ser nomeados sempre com feature no início. Por exemplo, feature/xpe-blog.
2. Branch Hotfix
É uma branch que se ramifica da Master e que surge da necessidade de agir imediatamente para solucionar algum problema. Logo depois que o erro for resolvido, ela é incorporada às branches Master e Develop para solucionar o bug em ambos os ramos.
Para cada problema encontrado, é preciso criar uma nova ramificação Hotfix.
3. Branch Release
Por fim, temos a branch Release. Ela serve como um local de testes para a integração da Develop na Master. Ou seja, se você quiser testar todas as novas funcionalidades antes delas serem incorporadas na branch Master, é preciso criar uma branch Release.
Quando usar o GitFlow
Segundo o criador Driessen, o GitFlow é recomendado para projetos que precisam dar suporte a várias versões do software, para projetos que possuem datas de entregas agendadas ou para projetos que muitas pessoas estão trabalhando nele ao mesmo tempo.
Ele não é indicado para trabalhos com prazos curtos ou que precisam de alterações constantemente, porque o GitFlow gera branchs de longa duração que atrapalham a entrega constante.
Vantagens e desvantagens de utilizar o GitFlow
De fato o GitFlow é uma ideia que veio para melhorar o fluxo de trabalhos para os profissionais de desenvolvimento web, mas assim como qualquer método, ele possui prós e contras.
Vantagens do GitFlow
- Facilita o desenvolvimento paralelo e a colaboração de duas ou mais pessoas ao mesmo tempo;
- Ideal para criar novas versões sem perder a original do projeto;
- Proporciona ramificações em qualquer fase de desenvolvimento.
Desvantagens do GitFlow
- Branches Master e Develop são consideradas redundantes e dificultam o processo de entrega;
- Fluxo e processos complexos;
- Não funciona bem em processos de entrega contínua, como é o caso do DevOps.
Como aprender a utilizar o GitFlow?
Antes de tudo, você precisa instalar o conjunto de ferramentas do GitFlow, que se dá de forma direta em vários sistemas operacionais.
Por exemplo, se você usa Windows, você pode baixar e instalar o GitFlow para o sistema operacional. Logo depois, você já pode começar a usar através do comando git flow init.
O GitFlow é uma extensão de comando do Git um pouco mais complexa do que outras extensões. Por isso, para ter domínio da técnica e identificar se ela realmente funciona para o seu tipo de projeto, é preciso prática e testes.