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:
-
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> -
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 statusNos 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.
-
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.
-
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.
-
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 commitPode editar esta mensagem antes de guardar.
-
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.