Diferenciar com ancestral comum ao resolver conflitos de mesclagem no vim (com fugitivo)

Se você usa o vim, mas não usa o fugitivo para resolver conflitos de mesclagem, eu recomendo fortemente assistir http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/ antes de ler o resto deste.

Ao resolver conflitos de fusão usando fugitive.vim’s :Gdiff, o vim mostra a versão do branch de destino, a versão do branch de fusão e a cópia de trabalho em um diff de 3 vias.

Isso mostra como as ramificações diferem umas das outras, mas é difícil ver quais mudanças foram feitas em cada ramificação, uma vez que divergiram umas das outras. Eu costumava olhar para o outro branch e tentar adivinhar como o arquivo havia mudado com base na minha memória, mas finalmente me cansei disso e encontrei uma maneira mais fácil.

Ao fazer uma diferença de 3 vias, fugitivo se refere ao ancestral comum dos dois ramos como :1. Você pode passar isso para qualquer um dos comandos fugitivos que usam uma revisão fugitiva como argumento. Graças a esse recurso, adicionei o seguinte ao meu .vimrc:

nnoremap <leader>ga :tab sp | Gvedit :1 | windo diffthis<CR>

Quando estou em um diff de 3 vias e ,gaclico, o vim abre uma nova aba e compara o arquivo na janela ativa com o ancestral comum. Quando termino de ler a diferença, eu simplesmente :tabclosevolto para onde estava.