Como resolver um conflito de merge no Git
Um conflito não é erro seu: é o Git pedindo que você escolha. Veja como ler as marcas e concluir.
Como resolver um conflito de merge?
Rode git status, abra os arquivos em conflito, escolha o que fica e apague as marcas <<<<<<<, ======= e >>>>>>>. Depois faça git add e git commit.
O que é um conflito
Um conflito acontece quando o Git tenta juntar duas mudanças e não consegue decidir sozinho qual vale: as duas mexeram nas mesmas linhas de um arquivo, ou uma apagou o que a outra alterou. O Git para no meio do merge, marca os arquivos afetados e espera que você decida. Não é sinal de erro seu; é o que acontece quando duas pessoas trabalham no mesmo trecho.
Num fork, o caso típico é este: você fez uma branch há duas semanas, o projeto original mudou o mesmo parágrafo do README, e agora o GitHub avisa que o pull request tem conflitos. Isso se resolve em duas etapas: trazer o original e decidir cada trecho.
Resolvendo na linha de comando
A documentação do GitHub dá a sequência. Ela foi adaptada aqui para a situação de um fork:
- Entre na pasta do projeto e traga as novidades do original:
git fetch upstream. - Junte-as na sua branch:
git merge upstream/main. O Git avisa dos arquivos em conflito. - Rode
git statuspara ver a lista dos arquivos com "unmerged paths". - Abra um arquivo em conflito e procure a marca
<<<<<<<. - Escolha o que fica: a sua versão, a do original ou um texto novo que junte os dois. Apague as três marcas:
<<<<<<<,=======e>>>>>>>. - Marque o arquivo como resolvido:
git add .(ougit addcom o nome do arquivo). - Conclua com
git commit. A documentação do GitHub sugere uma mensagem do tipo "Resolve merge conflict by incorporating both suggestions". - Envie:
git push. O pull request se atualiza e o aviso de conflito some.
Como ler as marcas
No arquivo, o trecho em conflito aparece em três partes. Entre <<<<<<< e ======= está a sua versão (a branch em que você está); entre ======= e >>>>>>> está a da outra branch. O texto depois de <<<<<<< e de >>>>>>> indica de onde veio cada lado.
Cuidados
- Não deixe as marcas no arquivo. Se
<<<<<<<ficar, ele vai para o commit. Antes dogit add, busque as três marcas em cada arquivo. - Rode os testes depois de resolver: um conflito mal resolvido pode compilar e ainda assim estar errado.
- Em dúvida, pergunte a quem escreveu o outro lado, no próprio pull request.
- Se se perder,
git merge --abortdesfaz o merge e volta ao estado de antes. Esse comando vem da ajuda do Git, não da página do GitHub que lemos.
Exemplo resolvido: um README com conflito
Depois de git merge upstream/main, o arquivo README.md aparece assim:
<<<<<<< HEAD
Veja o guia atualizado: https://exemplo.org/novo
=======
Veja o guia completo: https://exemplo.org/guia
>>>>>>> upstream/mainO lado de cima é o texto da branch de Maria; o de baixo, o do original. Ela decide ficar com o endereço do original e com a palavra "atualizado", e deixa uma única linha:
Veja o guia atualizado: https://exemplo.org/guiaDepois roda git add README.md, git commit e git push. O fluxo completo, do fork ao pull request, está no passo a passo, e o hábito que evita a maior parte dos conflitos é manter o fork atualizado.
Perguntas frequentes
O que significam as marcas <<<<<<<, ======= e >>>>>>>?
Elas separam as duas versões do trecho em conflito. Entre <<<<<<< e ======= está a versão da branch em que você está; entre ======= e >>>>>>> está a da outra branch. Você as apaga depois de escolher o que fica.
Como desfaço um merge que deu conflito?
Com git merge --abort, que volta ao estado de antes do merge. Foi testado aqui em um repositório de exemplo. O comando vem da ajuda do Git, e não da página do GitHub que lemos para o resto do guia.
O que são unmerged paths no git status?
É a lista de arquivos em que o Git não conseguiu juntar as duas versões e espera a sua decisão. A documentação do GitHub manda rodar git status para ver essa lista e abrir cada arquivo. Quando todos forem resolvidos e marcados com git add, o commit conclui o merge.
Como evito conflitos?
Mantendo o fork atualizado antes de criar cada branch, com pull requests pequenos e rápidos de revisar e conversando com quem mexe nos mesmos arquivos. Não elimina todos, mas reduz muito, segundo a prática comum.
Fontes deste guia
Abertas em 11/10/2026. O texto é nosso, em português; as fontes ficam aqui com link, licença e o que foi lido.
- Resolving a merge conflict using the command line (GitHub Docs)
A página não mostra data · aberta em · reconferência: confirmada na abertura (11/10/2026) · licença do conteúdo: CC BY 4.0 (conteúdo); MIT (código)
O que lemos: Os passos: git status, localizar a marca <<<<<<<, escolher o que ficar e apagar as marcas <<<<<<<, ======= e >>>>>>>, git add e git commit.
Como usamos: Texto próprio em português; os fatos e os comandos vêm da página, sem copiar trechos. Link e data em cada uso. - Syncing a fork (GitHub Docs)
A página não mostra data · aberta em · reconferência: confirmada na abertura (11/10/2026) · licença do conteúdo: CC BY 4.0 (conteúdo); MIT (código)
O que lemos: O botão Sync fork, o comando gh repo sync e, na linha de comando, git fetch upstream, git checkout main e git merge upstream/main; avisa que isso só atualiza a cópia local e que é preciso enviar com push.
Como usamos: Texto próprio em português; os fatos e os comandos vêm da página, sem copiar trechos. Link e data em cada uso.
Informação geral, não é aconselhamento jurídico. Quando um guia cita uma licença de conteúdo, ela vale para a página citada, não para este site.
Continue pelos guias
Os geradores, o passo a passo e os guias ficam a um clique.