Crie o conflito
Execute este exercício Bash em um diretório novo e vazio. Os nomes das branches e o arquivo estão limitados a este exemplo.
git init -b main
git config user.name "DevSheet Demo"
git config user.email "demo@example.invalid"
printf "colour=blue\n" > settings.txt
git add settings.txt
git commit -m "Base colour"
git switch -c feature
printf "colour=green\n" > settings.txt
git commit -am "Feature colour"
git switch main
printf "colour=red\n" > settings.txt
git commit -am "Main colour"
git merge featureO último comando deve parar com um conflito em settings.txt. Um código de saída diferente de zero é esperado neste exercício.
Leia as duas versões
git status --short
git diff -- settings.txtProcure UU settings.txt. No arquivo, <<<<<<< HEAD inicia o texto da branch atual, ======= separa as versões e >>>>>>> feature encerra o texto recebido. Esses rótulos descrevem este merge comum; um rebase tem outro contexto.
Escreva e revise o conteúdo final
Neste exercício, escolha green. Substitua todo o arquivo em conflito pelo resultado desejado, prepare apenas esse arquivo e confira o que será commitado.
printf "colour=green\n" > settings.txt
git add settings.txt
git diff --cached
git merge --continue
git status --shortSalve a mensagem de merge quando o editor abrir. Resultado esperado: status limpo e um commit de merge. Em um projeto real, combine as alterações conforme o comportamento da aplicação e execute os testes relevantes antes de concluir.
Cancele ou investigue um merge pendente
Enquanto o conflito ainda não foi resolvido, git merge --abort tenta voltar ao estado anterior ao merge. Faça commit ou stash de alterações não relacionadas antes de começar: o cancelamento pode não reconstruir edições que já existiam.
Preparar um arquivo informa ao Git que você resolveu o conflito, mesmo se ainda houver marcadores. Leia o diff preparado. Arquivos binários, conflitos de exclusão/modificação e renomeações exigem decisões próprias; substituir uma linha de texto não resolve esses casos.