Редактор или инструмент, показывающий версии git рядом друг с другом

Я ищу любой редактор или инструмент, который может одновременно просматривать две разные версии файла в репозитории git.

Аналогичная функциональность есть на github , но она только сравнивает выбранную версию с предыдущей и хотелось бы, чтобы она была более гибкой (например, сравнивала любые две версии файла).

Пример скриншота

Я предполагаю, что вам нужен графический интерфейс?
@ Том, да, я бы хотел, чтобы изменения были выделены, но если есть решение для командной строки, которое (а) удобно для пользователя, (б) возвращает четко отформатированный вывод, то почему бы и нет ...

Ответы (2)

Прочитав ваш последний комментарий на момент написания этой статьи, вы можете легко сделать это с помощью инструмента командной строки под названием Cdiff. Его использование довольно простое и работает с Git, Mercurial и SVN. Он написан на Python, поэтому прекрасно работает в Linux.

Cdiff (с открытым исходным кодом)

Инструмент на основе терминов для просмотра цветных добавочных различий в рабочей области Git/Mercurial/Svn или из стандартного ввода с поддержкой параллельного и автоматического пейджера. Требуется Python (>= 2.5.0) и меньше.

git log -p -2 | cdiff       # view git log with changes of last 2 commits
git show 15bfa | cdiff -s   # view a given git commit, side by side

Скриншот

На самом деле в Git есть специальная команда для этой цели: git difftool. Откроется любой подходящий редактор, в зависимости от конфигурации; в моей настройке (и, думаю, по умолчанию) это vimdiff :

$ git config --global diff.tool
vimdiff

Это должно быть доступно в любой типичной системе Unix. Это выглядит не совсем красиво (скорее, слишком красочно), но делает то, что вы хотите.

Скриншот vimdiff, вызванного из git

И поскольку это, по сути, просто специальный режим vim, его также можно очень хорошо использовать для редактирования наборов изменений. Например, при простом выполнении git difftoolправое представление на самом деле является файлом в рабочем каталоге. Таким образом, вы можете легко исправить любые изменения прямо в этом редакторе, прежде чем их зафиксировать! (Однако по умолчанию оба файла будут открываться в режиме readopen, поэтому вам действительно нужно :w!сохранить любые изменения, сделанные в vimdiff.)

Ах, и еще: чтобы выйти из этого редактора, введите :qa. Здесь :стандартный префикс vi для команд ed, qкоманда для закрытия ( выхода ) из файла, а постфиксa применяется ко всем открытым файлам.