DEV Community

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

Posted on

1

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.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay