Какие аргументы использует git diff для команды diff?
Когда вы вызываете git diff
, он использует diff
Утилита для сравнения файлов, однако, не по умолчанию. Он использует несколько дополнительных опций, некоторые из которых я могу назвать:
- Различные маркеры перед строками: +/- вместо>/<.
- Несколько строк контекста до и после фактически разных строк.
Но я не уверен, что это единственные изменения. Какие другие и какие аргументы командной строки делает git
перейти к diff
добиться выхода по умолчанию? И если бы я хотел сравнить, скажем, a.txt
с b.txt
и сделать файл сравнения таким же, как это делает git, какую командную строку мне использовать?
1 ответ
Git не использует стандартный *nix или GNU diff, но реализует собственный алгоритм сравнения.
Код для этого находится в основном в файлах builtin/diff.c
, builtin/diff-tree.c
, builtin/diff-index.c
а также builtin/diff-files.c
в дереве исходников Git.
Таким образом, он может делать некоторые причудливые вещи, такие как продвинутый анализ слов, и имеет надежную реализацию для всех платформ.
Стандартные (основанные на строках) исправления формата unified-diff, которые он может создать, совместимы с большинством других реализаций формата. IIRC, GNU diff (или это был патч?) Также добавили немного больше терпимости к некоторым дополнениям, которые Git добавляет в diff, чтобы быть более устойчивыми при применении патчей, генерируемых git.