5 desafios de resolução de conflito de merge (com os marcadores reais
<<<<<<< / ======= /
>>>>>>>) + 3 desafios de rebase interativo,
arrastando pick/squash/drop para os commits certos.
Acontece quando duas branches mudaram as mesmas linhas de um arquivo de formas
diferentes, e o Git não sabe sozinho qual versão manter. Ele para o merge e
marca o arquivo, esperando uma decisão humana.
Estrutura dos marcadores
<<<<<<< HEAD
sua versão (branch atual)
=======
versão da outra branch
>>>>>>> nome-da-outra-branch
O Git só marca as linhas que realmente divergem — não o arquivo inteiro.
Passo a passo
Identificar os arquivos em conflito (git status)
Localizar os marcadores no arquivo
Decidir qual versão manter, ou combinar as duas
Remover todos os marcadores
git add <arquivo>
git commit (ou git merge --continue)
Comandos de apoio
git status
lista arquivos com "Unmerged paths"
git merge --abort
desiste do merge, volta ao estado anterior
git checkout --ours <arq>
fica só com a sua versão
git checkout --theirs <arq>
fica só com a versão mergeada
Rebase interativo (git rebase -i)
Abre uma lista com os commits da mais antiga (topo) para a mais recente (embaixo).
Você escolhe uma ação para cada linha antes do Git aplicá-las de verdade: