Несколько других уже упомянули cdiff для сравнения git рядом, но никто не дал полной реализации этого.
Настройка CDIF:
git clone https://github.com/ymattw/cdiff.git
cd cdiff
ln -s `pwd`/cdiff ~/bin/cdiff
hash -r # refresh your PATH executable in bash (or 'rehash' if you use tcsh)
# or just create a new terminal
Редактировать ~ / .gitconfig, вставляя эти строки:
[pager]
diff = false
show = false
[diff]
tool = cdiff
external = "cdiff -s $2 $5 #"
[difftool "cdiff"]
cmd = cdiff -s \"$LOCAL\" \"$REMOTE\"
[alias]
showw = show --ext-dif
Выключение пейджера необходимо для работы cdiff с Diff, в любом случае, по сути, это пейджер, так что все в порядке. Difftool будет работать независимо от этих настроек.
Псевдоним show необходим, потому что git show поддерживает только внешние инструменты сравнения через аргумент.
«#» в конце внешней команды diff имеет важное значение. Команда diff в Git добавляет $ @ (все доступные переменные diff) к команде diff, но нам нужны только два имени файла. Таким образом, мы вызываем эти два явно с $ 2 и $ 5, а затем скрываем $ @ за комментарием, который иначе запутал бы sdiff. В результате возникает ошибка, которая выглядит следующим образом:
fatal: <FILENAME>: no such path in the working tree
Use 'git <command> -- <path>...' to specify paths that do not exist locally.
Команды Git, которые теперь производят параллельное дифференцирование:
git diff <SHA1> <SHA2>
git difftool <SHA1> <SHA2>
git showw <SHA>
Использование Cdiff:
'SPACEBAR' - Advances the page of the current file.
'Q' - Quits current file, thus advancing you to the next file.
Теперь у вас есть разностный diff через git diff и difftool. И у вас есть исходный код Python для настройки опытных пользователей, если вам это нужно.