Paulo Giovani
Posted on September 12, 2021
Uma forma de resolver conflitos de merge do Git
De todos os editores que já usei, foi do Neovim que mais gostei. Sim, eu gosto do Vim e Neovim. Como Andrew Hunt e David Thomas escreveram no clássico livro O Programado Pragmático, você escolhe seu editor como um artesão escolhe suas ferramentas. E treina até se tornar mestre nela.
Optei pelo Neovim em 2021 e até agora só alegria. Admito que a curva de aprendizagem dele é mais alta que a de um VSCode. Por outro lado, me divertido e aprendo muito ao customizá-lo. E quando o assunto é Git, o Neovim me ajuda bastante. E não é só do famoso plugin vim-fugitive do Tim Pope que me refiro.
Com a configuração abaixo no .gitconfig
, é possível transformar o Neovim em uma poderosa ferramenta para auxiliar na resolução de conflitos de merge.
[mergetool "nvim"]
cmd = nvim -f -c \"Gvdiffsplit!\" \"$MERGED\"
[merge]
tool = nvim
Vamos a um teste?
Digamos que temos um pequeno programa em Ruby, como abaixo, no branch master. E já fizemos o primeiro commit nele.
Agora, mudamos para o branch test1 com git checkout -b test1
. Vamos incluir mais um personagem no array de hobbits, Fredegar.
hobbits = %w[Frodo Sam Merry Pippin Bilbo Rosinha Fredegar]
Em seguida o commit dessa alteração com git commit -am 'added Fredegar'
, já que o arquivo aparece com status de modificado.
Concomitante ao branch test1, digamos que outra pessoa vez git checkout -b test2
e realizou a seguinte inclusão no array:
hobbits = %w[Frodo Sam Merry Pippin Bilbo Rosinha Gandalf]
E completa com git commit -am 'added Gandalf'
.
Hora de fazer merge no master 👀 🙈 🥶
Você vem na tranquilidade e faz o merge da branch test1:
Continua na tranquilidade e faz o merge do branch test2:
Eita! Deu conflito. E o Neovim irá ajudar a resolver. Vamos ver o que aconteceu.
Primeiro, vamos digitar git mergetools
no terminal e boom!!
O Neovim é aberto com splits verticais. Da esquerda para direita está primeiro a alteração apontando para o HEAD (foi a inclusão de Fredegar), depois o arquivo a ser editado com a resolução do conflito e por último o arquivo que gerou conflito apontando para a branch test2.
Conversamos com a pessoa e explicamos que além de commitar na mesma linha, ela inseriu Gandalf na lista de hobbits. O mago e os hobbits vão ficar retados. Vamos corrigir.
Pronto. Quem deve constar na lista é Fredegar. Deletamos as outras linhas e salvamos o arquivo.
Terminou? Ainda não. Depois de salvar, faremos o commit da "conciliação" para selar a paz e registrar as correções.
Agora sim! Conflito resolvido 😎.
Enfim, existe outras formas de realizar essa atividade. Essa é uma delas. Que particularmente gosto. Espero que o meu aprendizado possa te ajudar a resolver conflitos de merge que aparecerem.
Posted on September 12, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.