image

Unlimited bootcamps + English course forever

80
%OFF
Article image
Wallace Santos
Wallace Santos08/04/2025 16:36
Share
Microsoft Certification Challenge #3 DP-100Recommended for youMicrosoft Certification Challenge #3 DP-100

Fluxos de Trabalho (Workflows) com Git: Git Flow, GitHub Flow e Trunk-Based Development

  • #Git

O Git se consolidou como a ferramenta de controle de versão mais utilizada no mundo, sendo parte essencial do dia a dia de desenvolvedores, times de tecnologia e empresas de todos os portes. Entretanto, dominar apenas os comandos do Git não é suficiente para garantir um fluxo de trabalho eficiente. Por isso, surgiram diferentes modelos de workflows com Git, adaptados às mais variadas realidades de projetos e equipes.

O que são Workflows com Git?

Um workflow com Git é uma estratégia que define como o trabalho com o código será organizado dentro de um repositório. Ele especifica:

  • Como os branches são criados, nomeados e utilizados
  • O processo de integração de novas funcionalidades
  • O fluxo de revisão de código e publicação de releases

A escolha do workflow certo depende de diversos fatores, como o tamanho do time, a frequência de entrega, o ciclo de desenvolvimento e a cultura da empresa.

1. Git Flow

Criado por Vincent Driessen, é um dos workflows mais completos e estruturados.

Estrutura:

  • main (ou master): branch principal com código pronto para produção.
  • develop: branch de desenvolvimento, onde as funcionalidades são integradas.
  • feature/*: branches para desenvolvimento de novas funcionalidades.
  • release/*: para preparação de uma versão estável.
  • hotfix/*: para correção imediata de bugs em produção.

Indicado para:

  • Times grandes
  • Projetos com releases bem definidos
  • Aplicativos com ciclos de versão regulares

Vantagens:

  • Bem estruturado e organizado
  • Facilita o controle de versão e hotfixes
  • Ideal para entregas agendadas

Desvantagens:

  • Complexidade na gestão de branches
  • Pode gerar sobrecarga para times pequenos
  • Merges frequentes e conflitos potenciais

2. GitHub Flow

Criado e promovido pela GitHub, é mais simples e ágil, voltado para integrações e deploys contínuos.

Estrutura:

  • main: branch principal, sempre estável e pronta para deploy.
  • feature-branches: criadas a partir da main para cada funcionalidade, corrigidas via Pull Requests (PRs).

Indicado para:

  • Times pequenos ou médios
  • Projetos com entrega contínua
  • Startups, projetos open-source

Vantagens:

  • Simples e fácil de entender
  • Integração contínua é facilitada
  • Feedback rápido com Pull Requests

Desvantagens:

  • Pouco controle para grandes projetos
  • Dificuldade em lidar com múltiplas versões simultâneas
  • Pode gerar instabilidade se a branch main não for bem protegida

3. Trunk-Based Development

Neste modelo, todos os desenvolvedores trabalham diretamente (ou quase diretamente) na branch principal, chamada de trunk ou main, integrando o código com altíssima frequência.

Estrutura:

  • trunk (ou main): branch principal, foco absoluto do desenvolvimento.
  • Feature toggles são utilizados para controlar funcionalidades ainda não liberadas.

Indicado para:

  • Times altamente colaborativos
  • Projetos com DevOps/CI-CD bem estabelecidos
  • Grandes empresas com cultura de entrega contínua (ex: Google, Facebook)

Vantagens:

  • Altíssima frequência de entrega
  • Menos conflitos de merge
  • Estimula a cultura DevOps

Desvantagens:

  • Exige maturidade da equipe
  • Necessita de testes automatizados robustos
  • Feature toggles podem aumentar a complexidade do código

A escolha do workflow Git ideal depende de fatores como o tamanho da equipe, maturidade do time, necessidades de entrega e o tipo de projeto. Não existe uma solução única para todos, e muitos times adotam híbridos entre os modelos para se adequar melhor à sua realidade.

  • Para projetos complexos e bem estruturados, o Git Flow é uma excelente opção.
  • Para entregas rápidas e processos simples, o GitHub Flow é direto e eficaz.
  • Para grandes times com cultura DevOps consolidada, o Trunk-Based Development é o caminho.

A chave é entender as características de cada abordagem e escolher (ou adaptar) o modelo que melhor favorece a produtividade, qualidade e agilidade da sua equipe.

Comandos Git Essenciais por Categoria

1. Configuração Inicial

bash
CopiarEditar
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"

Define o nome e o e-mail do usuário, que aparecerão nos commits.

2. Iniciar e Clonar Repositórios

bash
CopiarEditar
git init

Inicia um repositório Git vazio na pasta atual.

bash
CopiarEditar
git clone https://github.com/usuario/repositorio.git

Clona um repositório remoto para sua máquina.

3. Trabalho com Branches

bash
CopiarEditar
git branch

Lista as branches existentes.

bash
CopiarEditar
git branch nova-feature

Cria uma nova branch.

bash
CopiarEditar
git checkout nova-feature

Muda para a branch criada.

bash
CopiarEditar
git checkout -b nova-feature

Cria e já muda para a nova branch.

bash
CopiarEditar
git merge develop

Faz o merge da branch develop na branch atual.

bash
CopiarEditar
git branch -d nome-da-branch

Deleta uma branch local.

4. Comandos de Commit

bash
CopiarEditar
git add arquivo.txt

Adiciona um arquivo específico para staging.

bash
CopiarEditar
git add .

Adiciona todas as alterações.

bash
CopiarEditar
git commit -m "Mensagem clara sobre a alteração"

Cria um commit com uma mensagem descritiva.

bash
CopiarEditar
git commit --amend

Edita o último commit (ex: corrigir a mensagem).

5. Trabalhando com Repositórios Remotos

bash
CopiarEditar
git remote add origin https://github.com/usuario/repositorio.git

Conecta seu repositório local ao remoto.

bash
CopiarEditar
git push origin main

Envia seus commits locais para a branch main no repositório remoto.

bash
CopiarEditar
git pull origin main

Atualiza seu repositório local com o código mais recente do remoto.

6. Controle de Histórico

bash
CopiarEditar
git status

Mostra os arquivos modificados e o status do repositório.

bash
CopiarEditar
git log

Exibe o histórico de commits.

bash
CopiarEditar
git diff

Mostra as diferenças entre arquivos modificados e o último commit.

7. Revertendo Mudanças

bash
CopiarEditar
git checkout -- arquivo.txt

Descarta mudanças em um arquivo.

bash
CopiarEditar
git reset --hard HEAD

Volta completamente para o último commit, descartando todas as mudanças.

bash
CopiarEditar
git revert <id-do-commit>

Cria um novo commit que desfaz um commit anterior específico.

8. Trabalhando com Pull Requests (GitHub Flow)

  • Criar uma branch nova: git checkout -b nova-feature
  • Fazer alterações e commits
  • Subir para o repositório remoto: git push origin nova-feature
  • Criar um Pull Request no GitHub
Share
Recommended for you
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comments (2)
Wallace Santos
Wallace Santos - 10/04/2025 17:01

Em projetos de código aberto, a escolha de um bom workflow com Git é essencial para manter a organização, facilitar contribuições e garantir a qualidade do código especialmente quando temos colaboradores de diferentes níveis de estudantes, técnicos e localizações.

Cada estratégia tem seu papel, por exemplo:

1. Git Flow pode ser útil em projetos com versões bem definidas e ciclos de release mais longos, mas acaba sendo mais burocrático para contribuições rápidas, o que pode desmotivar colaboradores ocasionais.

2. GitHub Flow, por ser mais leve e direto, costuma ser a escolha mais comum em projetos open source. Ele permite que qualquer pessoa abra uma branch, proponha mudanças via pull request e passe por uma revisão antes do merge. Isso favorece a agilidade e mantém o projeto saudável com colaboração contínua

3. Trunk-Based Development é poderoso em times internos e CI/CD automatizado, mas em comunidades abertas pode ser mais difícil de aplicar, pois exige muita coordenação e testes automatizados robustos para funcionar bem sem branches longas.

No contexto de comunidades colaborativas como as que vocês têm na DIO, o mais importante é escolher um fluxo que seja fácil de entender para novos contribuidores, tenha um processo claro de revisão e aprovação ou incentive boas práticas como testes e mensagens de commit claras.

DIO Community
DIO Community - 09/04/2025 14:27

Wallace, seu artigo sobre fluxos de trabalho com Git foi excelente! Você explicou de forma clara as diferentes estratégias de branching, como Git Flow, GitHub Flow e Trunk-Based Development, destacando suas aplicações e vantagens dependendo do tamanho da equipe e das necessidades do projeto. A explicação sobre a escolha do fluxo ideal foi muito útil para entender em quais cenários cada abordagem brilha.

Na DIO, estamos constantemente trabalhando com essas metodologias em projetos colaborativos, especialmente com turmas de DevOps e desenvolvimento ágil. Muitas das nossas turmas de Git estão aprendendo como otimizar seu fluxo de trabalho com branches e merges para melhorar a colaboração e reduzir erros em equipes de diferentes tamanhos.

Gostaria de saber sua opinião sobre como você enxerga o impacto da utilização dessas estratégias de workflow em projetos de código aberto e como elas podem ser aplicadas em comunidades colaborativas?

Recommended for youMicrosoft Certification Challenge #3 DP-100