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
- Crie um branch para sua tarefa: git checkout -b feature/login-page
- Faça commits normalmente nesse branch
- Envie para o repositório remoto: git push origin feature/login-page
- 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:
- Git alertará durante o merge
- Edite os arquivos marcados (<<<<<<< HEAD ... >>>>>>> branch)
- 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]