Wyświetlanie wszystkich 'Git diff' za pomocą vimdiff

Skonfigurowałem git diff aby zawinąć w vimdiff, używając " Git Diff with Vimdiff" jako przewodnika i działa zgodnie z oczekiwaniami, chyba że jest wiele plików ze zmianami.

Gdy Jest wiele plików ze zmianami i uruchamiam git diff, otwiera pierwszy plik i po zamknięciu pierwszej instancji vimdiff, pojawia się następujący komunikat:

external diff died, stopping at filename

To jest zupełnie inne zachowanie niż jestem przyzwyczajony. Miałem podobną konfigurację w przeszłości z SVN i, podczas różnicowania z wieloma plikami, przeglądałem pierwszy plik, następnie zapisywałem i kończyłem używając :wq i otwierał się następny plik z różnicami.

Tak nie jest w przypadku Gita. Próbowałem :n[ext], ale to nie zapełnia lewego okna oryginalnym plikiem, aby można było go odróżnić od zmodyfikowanej wersji.

Author: the Tin Man, 2010-09-14

4 answers

git config --global diff.tool vimdiff
git config --global difftool.prompt false

Typowanie git difftool daje oczekiwane zachowanie.

Polecenia nawigacyjne,

  • :qa w vim-IE cykle do następnego pliku w zestawie zmian bez zapisywania czegokolwiek.

Aliasing (przykład)

git config --global alias.d difftool

.. pozwoli Ci wpisać git d, Aby wywołać vimdiff.

Zaawansowane przypadki użycia,

  • domyślnie, git wywołuje vimdiff z opcją-R. Możesz nadpisać go za pomocą git config --global difftool.vimdiff.cmd 'vimdiff" $ LOCAL ""$ REMOTE"". To się otworzy vimdiff w trybie zapisu, który umożliwia edycję podczas różnicowania.
  • :wq w Vimie cykli do następnego pliku w zestawie zmian z zapisanymi zmianami.
 352
Author: chuckg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-17 20:42:05

Możesz spróbować git difftool, jest przeznaczony do tego.

Najpierw musisz skonfigurować narzędzie diff do vimdiff

git config diff.tool vimdiff

Następnie, gdy chcesz się różnicować, po prostu użyj git difftool zamiast git diff. Będzie działać zgodnie z oczekiwaniami.

 105
Author: czchen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-12 22:22:35
Git accepts kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
and opendiff as valid diff tools. You can also set up a custom tool. 

git config --global diff.tool vimdiff
git config --global diff.tool kdiff3
git config --global diff.tool meld
git config --global diff.tool xxdiff
git config --global diff.tool emerge
git config --global diff.tool gvimdiff
git config --global diff.tool ecmerge
 21
Author: Nanhe Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-23 05:29:37

Dla osób, które chcą używać innego narzędzia diff nie wymienionego w git, powiedzmy za pomocą nvim. oto, czego użyłem:

git config --global alias.d difftool -x <tool name>

W moim przypadku ustawiam <tool name> na nvim -d i wywołuję polecenie diff z

git d <file>
 3
Author: salty-cat-fish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-29 15:53:42