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

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: Vincent Driessen
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:

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-featureCom 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-featureCom 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-hotfixCom 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-hotfixCom 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.0Com 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.0Com 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!

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








