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.
Top comments (0)