branches - Gapezzz/documentacao-git-grupoLGA GitHub Wiki

O que são Branches? Branches (ramificações) no Git são ponteiros móveis para commits específicos, permitindo que você trabalhe em diferentes versões do seu projeto de forma isolada. Eles são essenciais para:

  • Desenvolver features separadamente
  • Corrigir bugs sem afetar a versão principal
  • Trabalhar em equipe sem conflitos constantes

Principais Comandos

Criar um novo branch: git branch nome-do-branch # Cria o branch git checkout nome-do-branch # Alterna para ele

Ou em um único comando: git checkout -b nome-do-branch

Listar branches: git branch # Lista branches locais git branch -a # Lista todos (incluindo remotos)

Alternar entre branches: git checkout nome-do-branch (No Git 2.23+ você pode usar git switch nome-do-branch)

Deletar um branch: git branch -d nome-do-branch # Deleta localmente (se já mesclado) git branch -D nome-do-branch # Força deleção (não mesclado) git push origin --delete nome-do-branch # Deleta no repositório remoto

Fluxo de Trabalho Comum

  1. Crie um branch para sua tarefa: git checkout -b feature/login-page
  2. Faça commits normalmente nesse branch
  3. Envie para o repositório remoto: git push origin feature/login-page
  4. Mescle no branch principal (ex: main) via Pull Request

Boas Práticas

  • Nomeie branches de forma descritiva (ex: fix/header-alignment)
  • Mantenha branches curtos (uma única feature/correção)
  • Sincronize frequentemente com git pull origin main
  • Delete branches já mesclados para manter o repositório organizado

Resolução de Conflitos Quando dois branches modificam o mesmo arquivo:

  1. Git alertará durante o merge
  2. Edite os arquivos marcados (<<<<<<< HEAD ... >>>>>>> branch)
  3. Adicione as alterações resolvidas: git add arquivo-conflitante.ext git commit

Branching Models Populares

  • Git Flow: Branches fixos para features, release, hotfix
  • GitHub Flow: Branch main sempre deployável + branches de features
  • Trunk-Based: Desenvolvimento direto no main (com feature flags)

Dica: Use git merge --no-ff para preservar histórico em merges importantes

Exemplo Visual main: A --- B ------------------------ E [merge] \ / feature: C --- D [commit1, commit2]

⚠️ **GitHub.com Fallback** ⚠️