Git Flow: o que é, quando utilizar e como funciona com passo a passo

Murillo Godoi Pedroso
Murillo Godoi Pedroso

Compartilhe

O Git é uma ferramenta essencial para controle de versão de código, e existem diversas maneiras de gerenciar branches em um repositório. Em projetos pessoais, é comum utilizar apenas uma branch para realizar commits, o que simplifica o gerenciamento solo. 

Porém, ao colaborar em equipe, a complexidade aumenta: é necessário controlar diferentes tarefas, correções e lançamentos realizados por várias pessoas ao mesmo tempo. 

Em todo projeto real, é importantíssimo que se tenha controle total do que está sendo produzido por uma equipe de pessoas desenvolvedoras, onde, ao mesmo tempo, são feitas muitas coisas, como: implementação de novas funcionalidades, correção de falhas, lançamento de versões, etc.

É nesse contexto que o Git Flow se destaca, facilitando o desenvolvimento colaborativo e organizado do código em equipes. 

Ao utilizar o Git para gerenciar versões de um projeto, é fundamental definir um fluxo de trabalho (workflow), atribuindo funções específicas para cada branch e determinando quando elas devem interagir. 

Portanto, neste artigo você vai descobrir o que é git flow, como funciona o gitflow na prática, quando utilizar (ou evitar), verá um tutorial passo a passo do git flow init e git flow feature start, além dos principais comandos e dicas para implementação. Também vamos comparar os benefícios e desvantagens do gitflow. 

O que é Git Flow? 

O Git Flow é um fluxo de trabalho (workflow) para Git criado para organizar melhor o versionamento de projetos, também chamado de gitflow. Muitos procuram no Google por 'gitflow o que é' ou 'o que é gitflow': trata-se de uma metodologia para estruturar diferentes tipos de branch, como develop, master, release, feature e hotfix, trazendo clareza na hora de contribuir em equipes. 

O Git Flow foi publicado em 2010 pelo engenheiro de software holandês Vincent Driessen, , com o objetivo de organizar as branches (ramificações) nos repositórios, trazendo mais fluidez ao desenvolvimento de novas funcionalidades, correções de bugs e lançamentos de versões. 

Foto de Vincent Driessen, criador do modelo Git Flow, homem caucasiano, cabelo loiro escuro, olhos castanhos, sorrindo. Vestindo uma blusa azul social. 

Foto: Vincent Driessen 

Banner promocional da Alura destacando oferta especial com até 40% de desconto em cursos de tecnologia. A mensagem convida a transformar a carreira na maior escola tech da América Latina, com botão “Aproveite” para acessar a promoção.

Quando utilizar o Git Flow? 

O Git Flow é indicado para projetos que seguem versionamento semântico (semantic versioning) ou que precisam manter e dar suporte a múltiplas versões do software ao mesmo tempo. 

Segundo o próprio autor, Vincent Driessen, em uma nota de reflexão publicada em 2020 (10 anos após a criação do Git Flow), se o projeto exige entrega contínua, como ocorre na maioria das aplicações web modernas, este modelo não é recomendado para esse tipo de cenário. O autor sugere alternativas mais simples como GitHub Flow para esses casos. 

A utilização do Git Flow também é indicada para equipes grandes, onde muitas pessoas contribuem simultaneamente em um repositório, ou para projetos com ciclos de entrega planejados e agendados. 

Pesquisas acadêmicas recentes (2025) mostram dados específicos sobre a adoção de diferentes estratégias. Um estudo publicado no arXiv indica que 84% dos desenvolvedores pesquisados usam branch-based (incluindo GitFlow) vs 12% trunk-based. 

Como funciona o Git Flow? 

O Git Flow opera com duas branches principais (Develop e Master), que são permanentes, e três branches de suporte (Feature, Release e Hotfix), que são temporárias e existem apenas até serem mescladas (merge) nas branches principais. 

Então, ao invés de uma única branch Master, esse fluxo de trabalho utiliza duas branches principais para registrar o histórico do projeto. A branch Master armazena o histórico do lançamento oficial, e a branch Develop serve como uma ramificação de integração para recursos. 

É ideal que todos os commits na branch Master sejam marcados com um número de versão. Na imagem abaixo, vemos como é a estrutura do fluxo do Git Flow: 

Diagrama que representa o fluxo do Git Flow. O diagrama é colorido em cinco cores, sendo elas: azul turquesa (Feature), verde-marinho (Develop), verde-claro (Release), vermelho (Hotfix) e amarelo (Master), e contém cinco retângulos coloridos que representam as branches utilizadas no Git Flow. O diagrama possui grafos interligados por linhas e flechas que representam a linha do tempo de commits feitos em cada branch e a relação entre eles, incluindo versões de software ligadas à branch master. 

Branch Main 

É a branch principal, onde está o código que já está em produção. Todas as novas funcionalidades e correções aprovadas acabam sendo mescladas (merge) na Main, geralmente por meio de merges provenientes de uma Hotfix ou Release. 

Branch Develop 

É a branch onde fica o código do próximo deploy. Ela serve como uma linha do tempo com os últimos desenvolvimentos, isso significa que ela possui funcionalidades que ainda não foram publicadas e que posteriormente vão ser associadas com a branch Master. 

Branch Feature 

As branches Feature são criadas para desenvolvimento de funcionalidades específicas. Recomenda-se adotar uma convenção de nomenclatura, normalmente "feature/nome-da-funcionalidade", por exemplo, “feature/alura-forum”. 

Essas branches são sempre criadas a partir da branch Develop. Ao serem concluídas, são fundidas (merge) de volta na Develop e, então, removidas. Para cada nova funcionalidade, uma nova branch Feature independente é criada. 

Um ponto importante: branches Feature nunca devem ser mescladas diretamente na Master, apenas na Develop. 

Branch Hotfix 

É uma hotfix branch criada a partir da master para realizar correções imediatas encontradas no sistema em produção. Quando concluída, ela é excluída após realizar o merge com as branches Master e Develop. O comando git flow hotfix start é utilizado para abrir uma hotfix branch no gitflow. 

Temos uma branch de hotfix para cada hotfix que precisamos implementar! 

A principal diferença entre uma Feature e um Hotfix é que Hotfixes são criados a partir da Master e, ao serem concluídos, são mesclados tanto na Master quanto na Develop, pois o erro pode existir em ambos os ambientes. 

Ao finalizar um Hotfix, também é importante criar uma nova tag de versão no projeto, garantindo um histórico claro das alterações relevantes feitas na Master. 

Branch Release 

Uma vez que uma etapa de desenvolvimento esteja concluída, teremos em nossa Branch Develop todas as features e Hotfix mesclados. Então, se quisermos ter todas essas novas funcionalidades na Branch Master, teremos que criar uma Branch de Release. 

A branch Release serve como ambiente de homologação. Depois de testá-la e aprová-la, realiza-se o merge com a Master. Se houver ajustes ou correções encontrados durante a homologação, essas mudanças também devem ser mescladas na Develop. 

Este processo é conhecido no gitflow como git flow release finish, um dos comandos mais utilizados no dia a dia das equipes. Entenda no tutorial abaixo como executar cada etapa do workflow no terminal. 

Agora que cobrimos a base conceitual do Git Flow, vamos entender como implementar esse fluxo de trabalho na prática 

Implementação do Git Flow 

Se você está procurando um git flow tutorial prático, a seguir está um guia passo a passo para instalar e utilizar o gitflow, desde o git flow install, passando pelo git flow init, até os principais comandos de criação e finalização de features, hotfix e releases.  

Existem duas formas de implementar o Git Flow, a primeira é utilizar os comandos básicos do Git, a outra é utilizar uma CLI que ajuda a simplificar o fluxo do Git Flow. A título de curiosidade, veremos como implementar o Git Flow utilizando as duas formas. 

Nota importante (2024): O repositório original nvie/gitflow não está mais sendo mantido. A equipe da Tower criou o git-flow-next, uma evolução moderna e totalmente compatível com o git-flow original. Para novos projetos, considere utilizar o git-flow-next. 

Para instalar a CLI do Git Flow, escolha uma opção de acordo com seu sistema operacional: 

  • OSX: brew install git-flow 
  • Linux: apt install git-flow 
  • Windows:https://git-scm.com/download/win → Já está incluído no Git for Windows desde setembro de 2015 (versão 2.5.3 ou superior). Para versões mais antigas, consulte as instruções de instalação manual no Wiki oficial do git-flow. 

Iniciando o Git Flow 

A primeira coisa que temos que fazer é criar uma Branch Develop a partir da Branch Master. Para isso, utilize: 

Com comando básico do Git: 

git checkout -b develop 

Com a CLI do Git-flow: 

git flow init 

Ao executar esse comando na CLI, poderão ser feitas algumas perguntas relacionadas ao fluxo do projeto. Responda conforme o padrão e a branch Develop será criada automaticamente. 

Branch Feature 

Criação de uma feature 

Com comandos básicos do Git: 

git checkout develop 
git checkout -b name-feature

Com a CLI do Git-flow: 

git flow feature start name-feature 

Finalização de uma feature 

Com comandos básicos do Git: 

git checkout develop 
git merge name-feature

Com a CLI do Git-flow: 

git flow feature finish name-feature 

Branch Hotfix 

Criação de um Hotfix 

Com comandos básicos do Git: 

git checkout master 
git checkout -b name-hotfix

Com a CLI do Git-flow: 

git flow hotfix start name-hotfix 

Finalização de um Hotfix 

Com comandos básicos do Git: 

git checkout master 
git merge name-hotfix 
git checkout develop 
git merge name-hotfix 
git tag name-hotfix

Com a CLI do Git-flow: 

git flow hotfix finish name-hotfix 

A CLI do Git-flow facilita o processo, automatizando etapas e reduzindo riscos de erro ao manipular branches. 

Branch Release 

Criação de uma Release 

Com comandos básicos do Git: 

git checkout develop 
git checkout -b release/1.0.0

Com a CLI do Git-flow: 

git flow release start 1.0.0 

Finalização de uma Release 

Com comandos básicos do Git: 

git checkout master 
git merge release/1.0.0 
git checkout develop 
git merge release/1.0.0 
git tag 1.0.0

Com a CLI do Git-flow: 

git flow release finish 1.0.0 

Pronto, agora sabemos como utilizar os comandos do Git e a CLI git-flow para aplicarmos o Git Flow na prática! 

Octocat, mascote do GitHub, animado em fundo azul. 

Fonte: dribbble.com 

Benefícios do Git Flow 

Entre os benefícios no uso do Git Flow, cabem-se citar:

Desenvolvimento Paralelo 

Uma das principais vantagens do Git Flow é permitir o desenvolvimento paralelo de maneira simples, isolando novas funcionalidades do código já finalizado. 

O novo desenvolvimento (como novas funcionalidades e correções de bugs não emergenciais) é feito em Branches de features e só é mesclado de volta ao corpo principal do código quando as pessoas desenvolvedoras estão seguras de que o código está pronto para lançamento. 

Além disso, caso seja preciso alternar entre tarefas, basta salvar (commit) suas alterações em andamento, criar uma nova branch Feature para a nova tarefa, e retornar para a anterior quando desejar, mantendo cada contexto isolado. 

Colaboração 

As branches de feature também facilitam a colaboração de duas ou mais pessoas desenvolvedoras em uma mesma tarefa, porque cada branch é uma caixa de proteção onde as únicas alterações que ocorreram são as que aconteceram para realizar a tarefa. 

Assim, é possível compartilhar a branch com outras pessoas para colaboração, facilitando o acompanhamento em equipe do que está sendo desenvolvido. 

Área de preparação 

A branch Develop funciona como uma área de preparação (staging), permitindo testar novas funcionalidades antes de integrar ao código de produção. 

Suporte para correções de emergência 

Branches de hotfix permitem realizar correções de emergência com segurança, pois contêm apenas a alteração necessária e evitam riscos de mesclar códigos indevidos. 

Mas como nem tudo são flores, agora que vimos os benefícios do Git Flow, vamos ficar por dentro também das desvantagens de utilizar essa abordagem. 

Desvantagens do Git Flow 

O Git Flow pode ser considerado um fluxo complexo, especialmente em projetos muito dinâmicos. Ele adiciona processos e pode tornar o desenvolvimento mais lento, já que o controle de múltiplas branches simultâneas exige organização contínua.. 

Além disso, por promover branches de longa duração devido ao ciclo de desenvolvimento estendido, o Git Flow não se adapta bem ao DevOps moderno, especificamente à integração e implantação contínua (CI/CD).

Em ambientes de CI/CD, a prática recomendada é manter branches de curta duração com integrações frequentes no trunk/main, o que conflita com a estrutura do Git Flow. 

A quantidade de branches que são criadas com o Git Flow e que podem ter diferentes tempos de vida aumentam potencialmente os conflitos do Git na hora do merge. Segundo especialistas, com Git Flow o número de conflitos de merge não é linear, mas pode triplicar as oportunidades de conflito, pois três tipos de branches (feature, release e hotfix) fazem merge na develop.

Outro ponto é que o Git Flow utiliza principalmente merge commits (com a flag --no-ff) ao invés de rebase, o que significa que rebase é desencorajado, embora tecnicamente não seja impossível de usar. 

Por esses motivos, se estiver trabalhando em uma startup ou empresa com ciclos de release rápidos, onde você precisa lançar várias features em um dia ou praticar entrega contínua, o Git Flow provavelmente não é a melhor escolha.

Nesses cenários, estratégias como trunk-based development ou GitHub Flow são mais adequadas, pois foram projetadas para deploys frequentes e branches de curta duração. 

Vale a pena adotar o Git Flow? Quando usar gitflow e recomendações 

Neste artigo, você conheceu o conceito do Git Flow, aprendeu suas vantagens e limitações, e viu como utilizá-lo na prática, tanto usando a CLI quanto apenas os comandos básicos do Git. 

Também ficou mais claro como funciona o fluxo de trabalho em equipe com o Git Flow e em quais situações essa abordagem é recomendada. 

Não deixe de explorar outras opções, pois além do Git Flow, existem diversos outros fluxos de trabalho, como: 

  • GitHub Flow: Mais simples que Git Flow, ideal para equipes menores e produtos que não precisam suportar múltiplas versões. Usa apenas a branch main e feature branches de curta duração. 
  • Trunk-Based Development: Todos os desenvolvedores trabalham em uma única branch (trunk/main) com branches de vida muito curta (menos de um dia). Ideal para CI/CD e deploys frequentes. 
  • GitLab Flow: Combina elementos do GitHub Flow com branches de ambiente (staging, production), oferecendo uma estrutura intermediária entre simplicidade e controle 

Se você deseja entender ainda mais sobre outros workflows, confira nosso artigo sobre 'Git Flow versus Trunk-based development', e continue aprendendo sobre gerenciamento de branches. 

Como aprender mais sobre o tema?

Se você quer dominar Git de forma profissional, entendendo na prática como aplicar Git Flow, GitHub Flow, Trunk-Based Development e as melhores estratégias de versionamento usadas no mercado, o curso de Git e GitHub da Alura é o próximo passo natural para você.

Nele, você vai aprender desde os comandos fundamentais até os fluxos de trabalho aplicados em equipes reais, passando por pull requests, resolução de conflitos, integração de features, organização de branches e colaboração em projetos modernos.

Aprofunde seu domínio sobre versionamento, trabalhe de maneira mais eficiente em equipe e evolua suas habilidades com Git de forma sólida e prática. Comece agora o curso de Git e GitHub da Alura e avance para o próximo nível no desenvolvimento profissional.

Veja também: 

Git e Github: controle e compartilhe seu código 

Git e Github: estratégias de ramificação, Conflitos e Pull Requests 

Git e GitHub: repositório, commit e versões 

Git Flow versus Trunk-based development 

Créditos 

Redação:Murilo Godoi • Revisão Didática:Carolina Castro

Veja outros artigos sobre Programação