🚀 Capítulo 05: Controle de Versão Avançado (Git Flow) (Tema: Multiverso da Marvel)

NOTE

Este capítulo utiliza a temática do Multiverso da Marvel para explicar o Git Flow. Gerenciar múltiplas linhas do tempo paralelas exige regras rígidas para não criar uma guerra multiversal!


1. 🎯 Objetivo da Aula

Compreender o modelo de ramificação Git Flow e aprender a gerenciar múltiplas linhas do tempo (branches) de desenvolvimento de forma organizada e profissional.

2. 🏢 O Cenário Prático (Seu Desafio)

No Multiverso da Marvel, existem várias linhas do tempo paralelas acontecendo ao mesmo tempo.

  • A Linha do Tempo Sagrada (Terra-616) é a principal. Nada pode dar errado nela.
  • Se alguém voltar no tempo ou fizer uma escolha diferente, cria-se uma Linha do Tempo Alternativa (Nexus).
  • Se essas linhas se chocarem sem controle, acontece uma Incursão e os universos se destroem!

No desenvolvimento de software com Git, nós usamos Branches (Ramos) para criar essas linhas do tempo paralelas para o nosso código. Se todo mundo mexer no mesmo arquivo ao mesmo tempo na linha principal, o código explode! O Git Flow é o manual de regras da AVT (Autoridade de Variância Temporal) para organizar o multiverso do código! Seu desafio é manter o multiverso em ordem!


3. 🧠 Fundamentos: A Teoria Traduzida

O Git Flow é um modelo de organização de branches criado por Vincent Driessen. Ele define quais branches criar e quando fazer a fusão (merge) entre elas.

⏳ As Linhas do Tempo do Git Flow:

  1. main (A Linha do Tempo Sagrada):
    • Contém o código que está rodando agora em produção (o site que o cliente usa). Só mexemos nela para colocar versões finalizadas.
  2. develop (A Base de Treinamento):
    • Onde os programadores juntam seus códigos novos para testar. É a linha do tempo do futuro próximo.
  3. feature/ (Linhas Alternativas de Criação):
    • Criadas a partir da develop para criar uma função nova (Ex: feature/tela-login). Quando termina, ela volta para a develop.
  4. hotfix/ (Linhas de Emergência):
    • Criadas a partir da main para corrigir um bug urgente que está acontecendo agora no site real. Corrige e volta direto para a main.

4. 📖 Exemplo Guiado: O Fluxo das Linhas do Tempo

Imagine o caminho que o seu código faz:

  1. Você está na develop.
  2. Você cria a feature/perfil-usuario para trabalhar nela.
  3. Você termina o trabalho e junta (merge) de volta na develop.
  4. A equipe testa a develop e vê que está tudo perfeito.
  5. A equipe junta a develop na main e lança a versão 1.0!

5. 🛠️ Prática Obrigatória 1: Qual Branch Usar?

Diga qual tipo de branch do Git Flow (feature, hotfix ou main) você deve criar em cada situação:

  1. O botão de “Comprar” do site de produção parou de funcionar e os clientes não conseguem pagar.
  2. O chefe pediu para você começar a desenhar a nova tela de “Histórico de Compras” que será lançada no mês que vem.
  3. O código que já foi testado e aprovado em homologação vai ser colocado no ar hoje para os clientes usarem.

6. 🛠️ Prática Obrigatória 2: O Conflito de Linhas do Tempo

O que acontece no Git quando dois programadores alteram a mesma linha do mesmo arquivo em branches diferentes e tentam juntar (merge) na develop ao mesmo tempo? Como chamamos esse evento e quem deve resolver?


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 05 DevOps) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_13_devops_e_cloud/
├── capitulos/
│   ├── capitulo_05_gitflow.md
│   └── codigos/
│       └── cap05/
│           └── comando_branches.txt

💡 Checkpoint de Lógica

O Git Flow é excelente para projetos grandes e com lançamentos agendados. Mas para projetos que atualizam o site dezenas de vezes por dia (Continuous Deployment), ele pode ser muito lento. Nesses casos, usamos modelos mais simples como o GitHub Flow!

10. 🔥 Desafio de Fixação

Pesquise sobre a diferença entre o Git Flow e o GitHub Flow (este último usa apenas a main e branches de feature).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. hotfix/ (Correção urgente em produção).
  2. feature/ (Nova funcionalidade para o futuro).
  3. main (Código que vai para produção). Gabarito da Prática 2: Acontece um Merge Conflict (Conflito de Fusão). O Git não sabe qual das duas alterações escolher e avisa os programadores. Um dos programadores (ou os dois juntos) deve abrir o arquivo, decidir qual código fica e salvar a versão final manualmente.

Capitulo Anterior | Proximo Capitulo