0 XP

DEVOPSQUEST

Minha Trilha
Módulo 3 · Git, GitHub e Bash

Conflitos de merge sem medo: entendendo e resolvendo

Iniciante 30 min+25 XPGit

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 --abort

Como o conflito aparece no arquivo

text

<<<<<<< HEAD
const desconto = 0.10;
=======
const desconto = 0.15;
>>>>>>> feature/cupom

Por 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. 1. Quando ocorre um conflito de merge?

  2. 2. O que `git merge --abort` faz?

  3. 3. Como evitar conflitos?

Minhas anotações

Salvo automaticamente neste navegador.

AnteriorPróxima