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
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
- Lista todos os commits do repositório remoto.
git log origin/main
- Lista todos os commits do repositório local.
git log main
- 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
- Envia o commit para o repositório remoto.
git push
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)