
Passo 1 de 7
Reconhecer um merge interrompido por conflito
Reconheça uma integração pendente e use git status para localizar o arquivo que precisa de resolução manual.
Trilha de aprendizado · Nível 2 · Tutorial 3
Resolver um conflito de alterações no mesmo trecho de um arquivo de texto e concluir o merge com o conteúdo conferido.
Reconhecer um merge interrompido por conflito
Reconheça uma integração pendente e use git status para localizar o arquivo que precisa de resolução manual. 2 min
Entender as duas versões no arquivo
Identifique a origem de cada trecho de um conflito pelos marcadores, sem confundir posição com correção. 3 min
Editar o conteúdo que deve permanecer
Transforme as versões em conflito no conteúdo solicitado, preservando as informações necessárias e salvando o arquivo sem marcadores. 4 min
Conferir se a resolução está correta
Revise o arquivo inteiro para encontrar marcadores restantes, informações perdidas e conteúdo que não corresponde ao resultado esperado. 3 min
Sinalizar e revisar a resolução
Prepare o arquivo corrigido, confirme que não restam caminhos não mesclados e revise as alterações antes de concluir a integração. 3 min
Concluir o merge e verificar o registro
Finalize a integração revisada e confirme a conclusão pelo estado do repositório, pelo histórico e pelo conteúdo do arquivo. 3 min
Prática final: resolver do início ao fim
Resolva um novo conflito em um ambiente local isolado e reúna evidências de que o conteúdo está correto e o merge foi concluído. 4 min

Passo 1 de 7
Reconheça uma integração pendente e use git status para localizar o arquivo que precisa de resolução manual.
Considere um repositório já preparado: as branches main e ajuste-horario têm mudanças diferentes na mesma linha do arquivo fictício aviso.txt, todas já commitadas. Antes do merge, não havia alterações pendentes. Na branch atual, main, foi executado o comando abaixo.
$ git merge ajuste-horario
CONFLITO (conteúdo): conflito de mesclagem em aviso.txt
A mesclagem automática falhou.O conflito ocorre porque o Git não consegue combinar automaticamente mudanças incompatíveis no mesmo trecho. A mensagem indica que a integração não foi concluída: há uma divergência que exige resolução manual.
A mensagem de falha significa que o Git encerrou o merge e não há mais integração pendente.
Consulte git status na pasta do repositório. Neste cenário, a seção Caminhos não mesclados identifica os arquivos cuja resolução ainda está pendente.
$ git status
No ramo main
Você tem caminhos não mesclados.
Caminhos não mesclados:
ambos modificados: aviso.txtaviso.txt.$ git merge atualiza-agenda
CONFLITO (conteúdo): conflito de mesclagem em docs/agenda.txt
A mesclagem automática falhou.
$ git status
No ramo main
Caminhos não mesclados:
ambos modificados: docs/agenda.txtCom base nessas saídas, qual afirmação está correta?

Passo 2 de 7
Identifique a origem de cada trecho de um conflito pelos marcadores, sem confundir posição com correção.
Neste exemplo, o merge de ajuste-horario foi iniciado na branch main. Veja como ficou o arquivo fictício aviso.txt. Por enquanto, apenas identifique as duas versões, sem editar.
Atendimento
<<<<<<< HEAD
Horário: das 9h às 18h.
=======
Horário: das 10h às 19h.
>>>>>>> ajuste-horario
Local: recepção.<<<<<<< HEAD inicia o bloco. O trecho até ======= vem da branch atual, main, que recebe a integração.======= separa as duas versões.======= e >>>>>>> ajuste-horario vem da branch integrada, ajuste-horario. O último marcador encerra o bloco e identifica essa branch.<<<<<<< HEAD
Horário: das 9h às 18h.
=======
Horário: das 10h às 19h.
>>>>>>> ajuste-horarioAssocie cada linha à sua função ou origem neste merge.
Toque em um item e depois no par correspondente.
Os marcadores mostram de onde vem cada versão, não qual está correta. O trecho de HEAD não tem prioridade por aparecer primeiro, e o trecho da branch integrada não tem prioridade por vir depois.
Dica
No exemplo, Atendimento e Local: recepção. estão fora dos marcadores. Essas linhas também fazem parte de aviso.txt: não são versões concorrentes desse bloco e não devem ser descartadas ao resolver o conflito.
Como a versão de HEAD aparece primeiro no bloco, ela é a versão que o Git considera correta.

Passo 3 de 7
Transforme as versões em conflito no conteúdo solicitado, preservando as informações necessárias e salvando o arquivo sem marcadores.
Resolver o conflito não é escolher automaticamente a branch atual ou a integrada. O conteúdo final deve atender à intenção da mudança.
Você pode:
Dica
Se não houver informação suficiente para decidir, esclareça o resultado esperado com quem solicitou a mudança antes de editar.
Um aviso informa que uma reunião começa às 9h na versão da branch atual e às 10h na versão da branch integrada. Não há orientação sobre qual horário deve valer. O que fazer?
Neste exemplo fictício, o pedido para aviso.txt é claro: o encontro começa às 10h e a entrada é gratuita. Nenhuma das versões abaixo atende sozinha ao pedido completo.
Encontro da comunidade
<<<<<<< HEAD
O encontro começa às 10h.
=======
O encontro começa às 9h. A entrada é gratuita.
>>>>>>> atualizar-aviso
Local: salão principal.Encontro da comunidade
O encontro começa às 10h. A entrada é gratuita.
Local: salão principal.Dica
Substitua o bloco completo pelo texto final, removendo as versões concorrentes e todas as linhas de marcadores: <<<<<<< HEAD, ======= e >>>>>>> atualizar-aviso. Preserve o título e o local, que estão fora do bloco, e salve o arquivo.
A oficina deve começar às 16h, e os participantes precisam trazer lápis e papel. Mantenha o título e o local sem alterações.
Oficina de desenho
<<<<<<< HEAD
A oficina começa às 15h. Traga lápis.
=======
A oficina começa às 16h. Traga papel.
>>>>>>> atualizar-oficina
Local: sala 2.Escreva o conteúdo completo de oficina.txt como ele deve ser salvo: sem marcadores e atendendo ao pedido.
Escreva pelo menos 20 caracteres (0/20).

Passo 4 de 7
Revise o arquivo inteiro para encontrar marcadores restantes, informações perdidas e conteúdo que não corresponde ao resultado esperado.
Depois de editar, confira:
Um arquivo pode estar sem nenhum marcador e ainda trazer uma informação errada ou incompleta.
Dica
Use a busca do editor para procurar <<<<<<<, ======= e >>>>>>>. Não pare no primeiro trecho corrigido: o mesmo arquivo pode ter vários blocos de conflito. A busca ajuda a encontrar marcadores restantes, mas não substitui a leitura do conteúdo.
O arquivo tinha dois blocos de conflito. Você conferiu apenas o primeiro, que está correto e sem marcadores. Isso é suficiente para considerar o arquivo inteiro revisado.
Leia o arquivo do início ao fim procurando:
Dica
Ajuste o conteúdo, salve o arquivo e repita a conferência. O objetivo não é apenas fazer os marcadores desaparecerem: é deixar o texto coerente com a intenção da mudança.
Neste exemplo fictício, o aviso deve informar atendimento de segunda a sexta, das 9h às 18h, e fechamento aos sábados. O título “Atendimento” e a linha “Canal: formulário do site”, que não estavam em conflito, devem permanecer.
Veja o arquivo completo após uma tentativa de resolução:
Atendimento
Segunda a sexta: 9h às 18h.
Sábado: 9h às 12h.
Sábado: fechado.O arquivo não contém marcadores. Ele atende ao pedido? Indique os problemas e os ajustes necessários antes de prosseguir.

Passo 5 de 7
Prepare o arquivo corrigido, confirme que não restam caminhos não mesclados e revise as alterações antes de concluir a integração.
O arquivo já foi corrigido, conferido e salvo, mas o Git ainda pode listá-lo como não mesclado. Use git add para sinalizar que você resolveu o conflito.
Nos exemplos, aviso.txt representa o arquivo corrigido. Use o caminho real do seu arquivo.
git add aviso.txt
git statusConfirme no git status que não restam caminhos não mesclados. Quando todos os conflitos foram sinalizados como resolvidos, o Git informa que o merge ainda está em andamento. Resolver os conflitos não conclui a integração.
Atenção
O git add aceita a resolução que você indica. Ele não verifica se o conteúdo está correto nem remove marcadores esquecidos.
Depois de git add aviso.txt, o git status indica que todos os conflitos foram corrigidos, mas o merge continua em andamento. Qual interpretação está correta?
Use git diff --staged para conferir as alterações preparadas para o commit de merge. Revise também as mudanças integradas automaticamente pelo Git, não apenas o arquivo que teve conflito.
Confira se o conjunto das alterações corresponde ao resultado esperado.
git diff --stagedDica
Edite e salve o arquivo. Depois, execute novamente git add com o caminho dele e repita a conferência com git status e git diff --staged.
Uma edição feita após o primeiro git add não atualiza automaticamente a versão preparada.
Você já executou git add aviso.txt. Na revisão das diferenças preparadas, percebeu que o encontro está marcado para 9h, mas o resultado combinado era 10h. Ordene as ações para deixar a correção preparada e revisada.

Passo 6 de 7
Finalize a integração revisada e confirme a conclusão pelo estado do repositório, pelo histórico e pelo conteúdo do arquivo.
Todos os conflitos foram resolvidos e as alterações preparadas já foram conferidas. Agora, conclua o merge que ainda está em andamento:
git commit -m "Integrar alterações com resolução do conflito no texto"Nesse contexto, o comando cria o commit de merge e encerra a integração em andamento. Ele registra a resolução manual junto às demais alterações do merge, inclusive as combinadas automaticamente pelo Git.
O arquivo foi resolvido, salvo e preparado. A revisão das diferenças está correta, mas o Git ainda informa que o merge está em andamento. Qual ação conclui essa integração?
Depois que o commit for criado, consulte o estado do repositório e o histórico:
git status
git log --oneline --graph --all --decorategit status deve indicar uma área de trabalho limpa, sem alterações pendentes nem aviso de merge em andamento.HEAD devem apontar para ele.Dica
Reabra o arquivo resolvido e confirme que ele contém o resultado esperado, sem marcadores de conflito. O estado limpo e o commit no histórico comprovam o registro, mas não garantem, sozinhos, que o texto está correto.
Após o commit, você observa:
git status indica uma área de trabalho limpa, sem merge em andamento.Afirmação: o merge foi concluído com o conteúdo correto.

Passo 7 de 7
Resolva um novo conflito em um ambiente local isolado e reúna evidências de que o conteúdo está correto e o merge foi concluído.
No Windows, abra o Git Bash; no macOS ou Linux, use um terminal com Bash. Cole o bloco inteiro abaixo.
Ele cria uma pasta temporária nova, configura uma identidade fictícia apenas nesse repositório e prepara o conflito. Não altera seus projetos existentes. É uma preparação auxiliar, não um roteiro de resolução — você não precisa memorizar o bloco.
A mensagem de conflito no final é esperada. Depois, execute o comando cd que o bloco exibir para entrar na pasta do desafio. Se ocorrer outro erro, não prossiga com a prática.
(
set -e
pasta=$(mktemp -d "${TMPDIR:-/tmp}/pratica-merge.XXXXXX")
cd "$pasta"
git init -b main
git config user.name "Pessoa em treinamento"
git config user.email "treino@example.invalid"
git config commit.gpgsign false
git config merge.conflictStyle merge
printf '%s\n' 'Encontro da equipe' 'Horário e local: 14h, sala Azul.' 'Levar: caderno.' > encontro.txt
git add encontro.txt
git commit -m "Registrar encontro inicial"
git switch -c ajustar-local
printf '%s\n' 'Encontro da equipe' 'Horário e local: 14h, sala Verde.' 'Levar: caderno.' > encontro.txt
git add encontro.txt
git commit -m "Transferir encontro para a sala Verde"
git switch main
printf '%s\n' 'Encontro da equipe' 'Horário e local: 15h, sala Azul.' 'Levar: caderno.' > encontro.txt
git add encontro.txt
git commit -m "Alterar horário do encontro para 15h"
git merge --no-ff --no-edit ajustar-local || [ "$?" -eq 1 ]
printf '\nEntre na pasta do desafio com este comando:\n'
printf 'cd "%s"\n' "$PWD"
)Na pasta criada, a branch atual é main. A integração de ajustar-local já foi iniciada e parou em um conflito no arquivo encontro.txt.
As alterações das duas branches estavam commitadas e não havia alterações pendentes antes do merge. Continue esse merge; não inicie outro.
O encontro deve acontecer às 15h, na sala Verde. Mantenha o título do arquivo e a orientação de levar um caderno.
Seu objetivo é concluir a integração com esse conteúdo, sem marcadores de conflito nem alterações pendentes, e identificar o commit de merge que a registrou.
Guarde as saídas do terminal durante a execução: sua entrega deve mostrar o que aconteceu de verdade, não apenas listar os comandos que você usaria.
Execute o desafio no repositório preparado. Depois, apresente:
Não basta apagar os marcadores ou dizer que o comando funcionou.
Escreva pelo menos 150 caracteres (0/150).
Resumo
Compare sua execução com estes critérios antes de encerrar.
Parabéns! Você concluiu: Resolver conflitos simples de merge
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks