Eu configurei git diff
para quebrar o vimdiff, usando " Git Diff com Vimdiff " como guia, e está funcionando conforme o esperado, a menos que haja muitos arquivos com alterações.
Quando há vários arquivos com alterações e eu corro git diff
, ele abre o primeiro arquivo e, após encerrar a primeira instância do vimdiff, recebo a seguinte mensagem:
external diff died, stopping at filename
Esse é um comportamento completamente diferente do que estou acostumado. Eu tinha uma configuração semelhante no passado com o SVN e, ao diferenciar vários arquivos, revisava o primeiro arquivo, depois escrevia e encerrava o uso, :wq
e o próximo arquivo com diferenças era aberto.
Este não é o caso do Git. Eu tentei :n[ext]
, mas fazer isso não preenche a janela esquerda com o arquivo original, para que possa ser diferente da versão modificada.
df
apelidodiff
e umdt
apelido paradifftool
. Além disso, digitar:qa
no Vim passará para o próximo conjunto de alterações sem salvar nada.git diff
quegit difftool
. Então, eu tenho um aliasd
para 'diff' e'dt' to
difftool '. Usabilidade é importante do que criar aliases com padrão.:w!
vez de:w
". Isso ocorre porque o git chamavimdiff
com a-R
opção Você pode substituí-lo porgit config --global difftool.vimdiff.cmd 'vimdiff "$LOCAL" "$REMOTE"'
. Isso abrirá o vimdiff no modo gravável.Você pode tentar
git difftool
, ele foi projetado para fazer essas coisas.Primeiro, você precisa configurar a ferramenta diff para vimdiff
Então, quando você quiser diferenciar, basta usar em
git difftool
vez degit diff
. Funcionará como você espera.fonte
fonte
merge
comdiff
as respostas acima irá fazer o truque, ou sejagit config --global diff.tool vimdiff
.Para pessoas que desejam usar outra ferramenta diff não listada no git, digamos com
nvim
. Aqui está o que eu acabei usando:No meu caso, eu definir
<tool name>
anvim -d
e invocar o comando diff comfonte