Связано ли `git diff` с `diff`?

Связано ли `git diff` с `diff`?

Относится git diffк diff?

  1. Реализовано git diffна основе diff?

  2. Являетсясинтаксис командной строкиgit diffпохожий начто изdiff? Помогает ли изучение одного из них в использовании другого?

  3. имеют ли их выходные файлы одинаковый формат? Могут ли они использоваться git patchи patch? (Есть ли git patch? Как это связано с patch?)

Спасибо.

решение1

Формат файла совместим. Git использует лучший формат, diff -u. Он также расширяет его для представления дополнительных типов изменений.

Эквивалент patchgit apply. Он выполняет этапы изменений в индексе, а также применяет их к рабочему дереву.

Я помню, git applyчто был строже, чем patch, хотя справочная документация, похоже, не делает явного сравнения. Она упоминает несколько тестов / ошибок, которые можно включить или отключить.

В справочной документации также предполагается, что его можно использовать как «замену GNU patch» — даже за пределами репозитория git, если использовать определенную опцию.

решение2

git-diff предлагает больше возможностей, чем diff, и я не думаю, что выходные патчи будут совместимы (без некоторых дополнительных опций), поскольку diff будет выдавать строки вроде

diff -ruNa dir1/file1.txt dir2/file1.txt

в то время как git-diff выдает строки вроде

diff --git a/dir1/file1.txt b/dir2/file1.txt

(обратите внимание на префикс источника и назначения, переключаемый с помощью --no-prefix, и различные параметры)

Вот некоторые дополнительные возможности git-diff:

  • Может записывать перемещенные/переименованные файлы, при этомразница не может

  • Использует рекурсивный режим, унифицированные различия и обрабатывает новые/удаленные файлы по умолчанию ( diff -ruN)

  • Поддерживает различные алгоритмы поиска различий

  • Поддерживает бинарные патчи git, которые кодируют двоичные данные в формате ASCII.

Связанный контент