Skip to main content

Sobre conflitos de mesclagem

Os conflitos de merge acontecem quando você faz merge de branches que têm commits concorrentes e o Git precisa da sua ajuda para decidir quais alterações incorporar n merge final.

Muitas vezes, o Git pode resolver diferenças entre branches e fazer merge deles automaticamente. Normalmente, as alterações são em linhas diferentes, ou até mesmo em arquivos diferentes, o que facilita o entendimento do merge pelos computadores. No entanto, às vezes, há alterações conflitantes que o Git não pode resolver sem a sua ajuda. Geralmente, os conflitos de merge acontecem quando as pessoas fazem alterações diferentes na mesma linha do mesmo arquivo ou quando uma pessoa edita um arquivo e outra pessoa exclui o mesmo arquivo.

Você deve resolver todos os conflitos de merge para poder fazer merge de uma pull request no GitHub. Se houver um conflito de mesclagem entre o branch de comparação e o branch base na solicitação de pull, veja a lista dos arquivos com alterações conflitantes acima do botão Mesclar solicitação de pull. O botão Mesclar solicitação de pull é desativado até que você resolva todos os conflitos entre o branch de comparação e o branch base.

Como resolver conflitos de mesclagem

Para resolver um conflito de merge, é preciso editar manualmente o arquivo em conflito para selecionar as alterações que deseja manter no merge final. Há duas maneiras diferentes de resolver um conflito de merge:

  • Se o conflito de merge foi causado pela concorrência de alterações na linha, como quando as pessoas fazem alterações diferentes na mesma linha do mesmo arquivo em diferentes branches no seu repositório Git, você poderá resolvê-lo no GitHub usando o editor de conflitos. Para obter mais informações, confira "Resolver um conflito de merge no GitHub".
  • Quanto a todos os outros tipos de conflito de merge, você deve resolvê-los em um clone local do repositório e fazer push da alteração no seu branch do GitHub. Use a linha de comando ou uma ferramenta como o GitHub Desktop para efetuar push da alteração. Para saber mais, confira "Resolver um conflito de merge usando a linha de comando".

Se você tiver um conflito de merge na linha de comando, não será possível fazer push das alterações locais no GitHub até que o conflito de merge seja resolvido localmente no computador. Se você tentar fazer merge dos branches que têm um conflito de merge na linha de comando, uma mensagem de erro será exibida. Para obter mais informações, confira "Resolver um conflito de merge usando a linha de comando".

$ git merge BRANCH-NAME
> Auto-merging styleguide.md
> CONFLICT (content): Merge conflict in styleguide.md
> Automatic merge failed; fix conflicts and then commit the result

Leitura adicional