Oi, Jackson! Tudo certo?
Logo de início, peço desculpas pela demora em retornar!
Com a mensagem de erro que aparece ao tentar realizar o rebase
, o Git nos informa que não é possível mesclar o commit mais antigo com commits novos, mas somente o contrário. Isso aconteceu, pois o squash
faz com que o commit indicado se mescle com o anterior e, como tentamos usá-lo no commit mais antigo da sequência, não há outro antes dele para que de fato a mesclagem aconteça.
Quando o VIM é aberto depois de executar o git rebase -i
, os commits apresentados seguem a ordem do mais antigo para o mais recente. Desse modo, é preciso que o commit que se encontra na primeira linha seja iniciado com pick
(indicando qual commit será escolhido) enquanto os demais, com squash
(indicando quais commits serão mesclados com aquele selecionado com pick
).
Sabendo disso, podemos, inicialmente, abortar o rebase
, desta forma:
git rebase --abort
Caso não se lembre dos commits que se deseja mesclar, podemos utilizar o comando abaixo (ele nos mostrará todos os commits que já fizemos em ordem do mais recente para o mais antigo):
git log --oneline
Logo após isso, podemos executar o comando abaixo:
git rebase -i HEAD~n
Observação: onde encontra-se HEAD~n
, substituir a letra “n” pela quantidade de commits em que se deseja trabalhar (quantidade decidida após visualizar o histórico de todos os commits).
Nesse momento, será aberta a tela do VIM. para alterar o conteúdo apresentado, pressione a tecla “i”. Logo em seguida, analise os commits e substitua a palavra “pick” por “s”, deixando somente o primeiro com a palavra “pick”, como no exemplo abaixo:
Para finalizar, basta pressionar a tecla ESC e digitar, tudo em minúsculo :x.
Uma nova tela do VIM será aberta. Desta vez, é apenas para apresentar a mudança feita, será preciso, portanto, apenas pressionar a tecla ESC e digitar :x, como fizemos a pouco.
Pronto! Depois de todos esses passos, conseguimos executar o rebase
normalmente.
Jackson, caso queira conhecer um pouco mais sobre essa mesclagem que fizemos e sobre uso do squash
, deixo como recomendação assistir um vídeo super bacana da Websérie “Git e Github para sobrevivência”:
Espero tê-lo ajudado! Caso surjam dúvidas após minha explicação ou ao longo dos seus estudos, fico à disposição para ajudá-lo.
Até mais, Jackson!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.