
Conflitos de merge sem medo: entendendo e resolvendo
Objetivos desta aula
- Entender por que conflitos acontecem
- Ler os marcadores de conflito (<<<<<<<, =======, >>>>>>>)
- Resolver conflitos passo a passo com segurança
- Evitar conflitos com boas práticas de branch
Um conflito de merge acontece quando duas pessoas alteram a mesma região do mesmo arquivo em branches diferentes. O Git não consegue decidir sozinho qual versão manter — e pede ajuda para você. Não é erro seu: é parte normal do trabalho em equipe.
Quando o conflito aparece, o Git marca o arquivo assim: <<<<<<< HEAD mostra a sua versão, ======= separa, e >>>>>>> outra-branch mostra a versão que está chegando. Seu trabalho é escolher o que fica — pode ser uma das duas, as duas juntas, ou algo novo.
O passo a passo seguro: (1) rode git status para ver os arquivos em conflito, (2) abra cada um, (3) encontre os marcadores, (4) edite deixando o conteúdo correto e apague os marcadores, (5) git add no arquivo, (6) git commit para concluir o merge.
Se entrar em pânico no meio, git merge --abort cancela tudo e volta ao estado anterior. Nada se perde — use sem medo.
Depois de resolver, teste o código antes de commitar: o merge pode compilar mas quebrar a lógica (ex.: as duas versões mexeram na mesma função).
Ferramentas ajudam: git mergetool, o editor do VS Code (botões “Accept Current/Incoming/Both”) e interfaces do GitHub para conflitos simples.
A melhor forma de lidar com conflitos é evitá-los: branches curtas (dias, não semanas), git pull --rebase frequente da branch principal, e comunicação quando duas pessoas mexem no mesmo arquivo.
Para conflitos em arquivos gerados (lockfiles, builds), normalmente o correto é aceitar uma versão e regenerar o arquivo, em vez de editar na mão.
Na prática
Resolvendo um conflito na prática
bash
git merge feature/cupom
# CONFLICT (content): Merge conflict in src/preco.ts
git status # lista os arquivos em conflito
# ...edita o arquivo, remove os marcadores...
git add src/preco.ts
git commit # conclui o merge
# se quiser desistir no meio:
# git merge --abortComo o conflito aparece no arquivo
text
<<<<<<< HEAD
const desconto = 0.10;
=======
const desconto = 0.15;
>>>>>>> feature/cupomPor que isso importa
Todo time usa Git diariamente; quem resolve conflitos com calma e método destrava o trabalho de todos.
Erro comum
Apagar os marcadores sem ler as duas versões, escolhendo uma versão no escuro e perdendo código do colega.
Dica de produção
Em conflito de lockfile (package-lock.json), aceite uma versão e rode o instalador de novo para regenerar.
Pergunta de entrevista
Explique o que significam os marcadores <<<<<<<, ======= e >>>>>>> num conflito de merge.
Glossário
- Conflito
- Quando o Git não consegue unir duas alterações na mesma região.
- HEAD
- Referência para o commit atual da sua branch.
- merge --abort
- Cancela o merge e volta ao estado anterior.
- Lockfile
- Arquivo gerado que trava versões exatas de dependências.
Conexão com o CloudShop
No CloudShop, duas pessoas mexem no serviço de preços ao mesmo tempo — você resolve o conflito sem perder nada.
Quiz da aula
1. Quando ocorre um conflito de merge?
2. O que `git merge --abort` faz?
3. Como evitar conflitos?
Minhas anotações
Salvo automaticamente neste navegador.
