Sobes.tech
Junior

Como resolver conflitos no Git?

sobes.tech IA

Resposta da IA

Os conflitos no Git ocorrem quando dois participantes modificam a mesma parte de um ficheiro ou quando um deles elimina um ficheiro enquanto o outro o modifica.

Para resolver conflitos, geralmente seguem-se os seguintes passos:

  1. Atualizar o repositório local: Certifique-se de ter a versão mais recente do código do repositório remoto.

    // Obter as últimas alterações do repositório remoto
    git pull origin <branch-name>
    
  2. Identificação de ficheiros em conflito: O Git informará quais os ficheiros com conflitos.

    // Mostrar o estado do repositório e ficheiros em conflito
    git status
    

    Nos ficheiros, verá marcadores de conflito, por exemplo:

    <<<<<<< HEAD
    // As suas alterações locais
    =======
    // Alterações recebidas da branch remota
    >>>>>>> <commit-hash>
    
    • <<<<<<< HEAD: início das suas alterações locais.
    • =======: separador entre as suas alterações e as entrantes.
    • >>>>>>> <commit-hash>: fim das alterações entrantes com o hash do commit.
  3. Edição manual dos ficheiros: Abra o ficheiro em conflito num editor de texto e remova manualmente os marcadores de conflito, deixando apenas o código necessário. Deve decidir qual a versão do código manter ou combinar ambas.

  4. Adicionar ficheiros corrigidos: Após resolver o conflito no ficheiro, adicione-o ao índice.

    // Adicionar o ficheiro resolvido ao índice
    git add <conflicted-file>
    

    Repita este passo para todos os ficheiros em conflito.

  5. Criar um commit de resolução de conflito: Após adicionar todos os ficheiros resolvidos, crie um commit. O Git sugerirá automaticamente uma mensagem de commit indicando a resolução do conflito.

    // Criar o commit de resolução
    git commit
    

    Pode editar esta mensagem antes de guardar.

  6. Enviar as alterações: Envie as alterações resolvidas para o repositório remoto.

    // Enviar alterações para o repositório remoto
    git push origin <branch-name>
    

Ferramentas para resolver conflitos:

Para maior conveniência, pode usar ferramentas gráficas de fusão, como:

  • Kdiff3
  • Meld
  • Editor de Fusão do VS Code
  • IDEs (IntelliJ IDEA, PyCharm, etc.) com ferramentas integradas

Para configurar uma ferramenta externa para resolução de conflitos:

// Configuração da ferramenta de fusão externa (exemplo para opendiff)
git config --global merge.tool opendiff
// Executar a ferramenta
git mergetool

É importante lembrar que obter alterações do repositório remoto a tempo (git pull) ajuda a minimizar o número de conflitos.