git diff
использует «универсальный» формат, diff -u
, по умолчанию. cvs diff
использует более старый стандартный формат diff (удаленные строки, отмеченные <
, добавленные строки, отмеченные >
, без контекста вокруг каждого различия).
Вы можете получить "diff diff контекста", используя git diff -c
или git diff -C5
, например, чтобы получить 5 строк контекста, а не по умолчанию 3.
diff --normal
(по крайней мере, если вы используете diffutils GNU) создаст diff в старом стиле, но git diff
, похоже, не распознает опцию --normal
.
Лично я нахожу контекстные различия гораздо более читаемыми, чем различия в старом стиле, поэтому я никогда не обнаруживал необходимости использовать различия в старом стиле с git diff
. Попробуйте git diff -c
(вместе с предложением haggai_e отключить пейджер).
Если вам действительно нужны различия в старом стиле (<
, >
, без контекста), возможно, есть способ сделать это.
РЕДАКТИРОВАТЬ:
Если git diff
не делает то, что вы хотите, вы можете извлечь копии ревизий файла и использовать любой понравившийся вам инструмент сравнения. Мой собственный инструмент get-versions
может извлекать несколько версий файла из git (или из RCS или CVS).
А вот еще одно решение, хотя оно немного сложнее. В качестве примера я клонировал репозиторий git для git
. Если я хочу сравнить две последовательные версии файла README
верхнего уровня, я могу сделать это:
$ diff --normal <(git show 779d7e93773a0dcf918dc77023511fdc68161bd8:README) \
<(git show 71ce415dc088f19a0b8d6c8567dfdd6d851842b2:README)
24,26c24,25
< compatible with the GPLv2).
< It was originally written by Linus Torvalds with help of a group of
< hackers around the net. It is currently maintained by Junio C Hamano.
---
> compatible with the GPLv2). It was originally written by Linus
> Torvalds with help of a group of hackers around the net.
$
Было бы достаточно легко обернуть это в небольшой скрипт.
Обратите внимание, что путь к файлу, следующий за :
(README
в приведенном выше примере), относится к корню хранилища, а не к текущему каталогу. Вы можете поставить перед именем ./
, чтобы сделать его относительно текущего каталога. (Последний может не работать с некоторыми более старыми версиями git.)