DEV Community

Cover image for Resolvendo um conflito no git
Carla Crija
Carla Crija

Posted on

Resolvendo um conflito no git

Quando tentamos subir um commit da máquina local para o repositório remoto pode acontecer um conflito. Esse tipo de problema é muito comum em ambiente de desenvolvimento, onde fazemos o versionamento de códigos usando o git. Saber resolver esse tipo de erro é crucial para não resultar em perdas de trabalho e tempo.

Identificar o problema

Nesse exemplo abaixo aconteceu um conflito por eu ter feito um commit no repositório remoto e no repositório local, em seguida tentei subir uma alteração para o repositório remoto sem antes ter atualizado o repositório local.

O que resultou em um conflito
alterei o repositório remoto;
alterei o repositório local;
tentei subir a alteração para o repositório remoto

Para não resultar em um conflito
alterar o repositório remoto;
trazer alteração para o repositório local;
fazer alteração no repositório local;
subir para o repositório remoto

Conflito ao subir um commit

Nessa imagem podemos identificar o erro pelo hash(identificador do commit) dos commits listados, onde o último commit da direita(local) e o último commit da esquerda(servidor) estão com os hashs diferentes.

Resolver o problema

  • Atualiza as referências remotas no repositório local, possibilitando a comparação do repositório remoto com o repositório local. Esse comando é muito importante para a identificação do erro.
git fetch
Enter fullscreen mode Exit fullscreen mode
  • Lista todos os commits do repositório remoto.
git log origin/main
Enter fullscreen mode Exit fullscreen mode
  • Lista todos os commits do repositório local.
git log main
Enter fullscreen mode Exit fullscreen mode
  • Reorganiza o histórico dos commits da branch local com base na branch remota. O git reorganiza os commits do mais velho para o mais novo, trazendo uma sequência de commits mais linear.
git rebase origin/main
Enter fullscreen mode Exit fullscreen mode
  • Envia o commit para o repositório remoto.
git push
Enter fullscreen mode Exit fullscreen mode

Evitar o problema

Para que problemas como esse não ocorram é importante que os repositórios estejam sempre alinhados. É recomendado escolher um dos dois repositórios para fazer as alterações, mas quando é necessário utilizar os dois, certifique-se que o repositório local esteja alinhado com o repositório remoto, para isso você precisa rodar o git pull antes de fazer qualquer alteração na máquina local. É interessante fazer commits pequenos e frequentes para reduzir a complexidade e ser mais fácil de resolver algum problema futuro.

Em caso de trabalho em equipe, é fundamental manter a equipe informada em caso de alterações.

Top comments (0)