Os conflitos de merge ocorrem quando alterações concorrentes são feitas na mesma linha de um arquivo ou quando uma pessoa edita um arquivo e outra pessoa exclui o mesmo arquivo. Para saber mais, confira Sobre conflitos de integração.
Dica
Você pode usar o editor de conflitos do GitHub para resolver conflitos de mesclagem de alterações de linha concorrentes entre ramificações que fazem parte de uma solicitação de pull. Para saber mais, confira Resolvendo um conflito de mesclagem no GitHub.
Conflitos de merge de alterações diferentes na linha
Para resolver um conflito de merge causado por alterações diferentes na linha, você deve escolher quais alterações dos diferentes branches incorporar em um novo commit.
Por exemplo, se você e outra pessoa editaram o arquivo styleguide.md nas mesmas linhas em branches diferentes do mesmo repositório Git, você receberá um erro de conflito de merge ao tentar mesclar esses branches. Você deve resolver esse conflito de merge com um novo commit antes de fazer merge desses branches.
-
Abra TerminalTerminalGit Bash.
-
Navegue até o repositório Git local que tem o conflito de mesclagem.
cd REPOSITORY-NAME -
Gere uma lista dos arquivos afetados pelo conflito de merge. Neste exemplo, o arquivo styleguide.md tem um conflito de mesclagem.
$ git status > # On branch branch-b > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add <file>..." to mark resolution) > # > # both modified: styleguide.md > # > no changes added to commit (use "git add" and/or "git commit -a") -
Abra seu editor de texto favorito, como o Visual Studio Code, e procure o arquivo que contém conflitos de mesclagem.
-
Para ver o início do conflito de mesclagem no arquivo, pesquise o marcador de conflito
<<<<<<<no arquivo. Ao abrir o arquivo no editor de texto, você verá as alterações do HEAD ou do branch base após a linha<<<<<<< HEAD. Em seguida, você verá=======, que separa suas alterações das da outra ramificação, seguido de>>>>>>> BRANCH-NAME. Neste exemplo, uma pessoa escreveu "abra um problema" no branch HEAD ou base e outra pessoa escreveu "faça sua pergunta no IRC" no branch de comparação oubranch-a.If you have questions, please <<<<<<< HEAD open an issue ======= ask your question in IRC. >>>>>>> branch-a -
Decida se você deseja manter apenas as alterações do seu branch, manter apenas as alterações do outro branch, ou fazer uma nova alteração, que pode incorporar alterações de ambos os branches. Exclua os marcadores de conflito
<<<<<<<,=======,>>>>>>>e faça as alterações desejadas na mesclagem final. Neste exemplo, as duas alterações são incorporadas ao merge final:If you have questions, please open an issue or ask in our IRC channel if it's more urgent. -
Adicione ou prepare as alterações.
git add . -
Envie as alterações com um comentário.
git commit -m "Resolve merge conflict by incorporating both suggestions"
Agora você pode mesclar as ramificações na linha de comando ou efetuar push das alterações no repositório remoto no GitHub e mesclar as alterações em uma solicitação de pull.
Conflitos de merge de arquivo removido
Para resolver um conflito de merge causado por alterações concorrentes em um arquivo, quando uma pessoa exclui um arquivo em um branch e outra pessoa edita o mesmo arquivo, você deve escolher se deseja excluir ou manter o arquivo removido em um novo commit.
Por exemplo, se você tiver editado um arquivo, como README.md, e outra pessoa tiver removido o mesmo arquivo em outro branch no mesmo repositório Git, você receberá um erro de conflito de merge ao tentar mesclar esses branches. Você deve resolver esse conflito de merge com um novo commit antes de fazer merge desses branches.
-
Abra TerminalTerminalGit Bash.
-
Navegue até o repositório Git local que tem o conflito de mesclagem.
cd REPOSITORY-NAME -
Gere uma lista dos arquivos afetados pelo conflito de merge. Neste exemplo, o arquivo
README.mdtem um conflito de merge.$ git status > # On branch main > # Your branch and 'origin/main' have diverged, > # and have 1 and 2 different commits each, respectively. > # (use "git pull" to merge the remote branch into yours) > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # deleted by us: README.md > # > # no changes added to commit (use "git add" and/or "git commit -a") -
Abra seu editor de texto favorito, como o Visual Studio Code, e procure o arquivo que contém conflitos de mesclagem.
-
Decida se você deseja manter o arquivo removido. Você pode ver as alterações mais recentes feitas no arquivo removido no editor de texto.
Para adicionar o arquivo removido de volta ao repositório:
git add README.mdPara remover o arquivo do seu repositório:
$ git rm README.md > README.md: needs merge > rm 'README.md' -
Envie as alterações com um comentário.
$ git commit -m "Resolve merge conflict by keeping README.md file" > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
Agora você pode mesclar as ramificações na linha de comando ou efetuar push das alterações no repositório remoto no GitHub e mesclar as alterações em uma solicitação de pull.
Leitura adicional
-
[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts) -
[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally)