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 saber mais, 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 saber mais, 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