- Com Vimdiff devidamente configurado
git config merge.tool vimdiff
, executegit mergetool
- O terminal renderizará com 4 janelas, sendo as 3 de cima representando em ordem e a ultima:
- O arquivo LOCAL antes do conflito
- O arquivo BASE (comum) do local e ao remoto
- O arquivo vindo do REMOTE.
- Em baixo como o arquivo está sendo mergeado para o commit
- De preferência mantenha seu cursor de preferencia sempre na janela maior
- Acesse algum diff
- Utilize
:diffg NOME-DO-ARQUIVO
para escolher uma das modificações se achar necessário:diffg LO
utiliza o diff de LO CAL:diffg BA
utiliza o diff de BA SE (raro ser usado):diffg RE
utiliza o diff de RE MOTE- Ou altere o arquivo na mão
- Ao finalizar todas modificações que julgar necessário SALVE e SAIA com
:wqa
- Se existir, um novo arquivo com conflito será aberto, do contrário ficará no terminal aguardando commit
Desistência
- Caso queira cancelar, saia com
:cq
- Aborte o merge com
git merge --abort
Atalhos úteis
ctrl-w-w
alterna[c
e]c
pula entre os diffs
Exemplo prático
Para validar estratégias de merge tool, recomendo meu projeto exemplo_vim-merge-conflict com as instruções de como forçar conflitos