Из руководств git-format-patch подготавливает исправления, подходящие для отправки по электронной почте, а git-diff показывает изменения.
Это две разные вещи и имеют разные цели, они просто выводят формат патча. Но git-format-patch
добавляет данные о фиксации (дата, автор, сообщение фиксации) и объединяет их в формат, подходящий для отправки в качестве почтового сообщения Unix (хотя это просто файлы, поэтому их можно отправлять другим методам и по-прежнему применять с помощью git-am).
Также git-format-patch
генерирует файл исправления для каждой фиксации в указанном вами диапазоне. Эти изменения будут добавлены в ваш репозиторий как коммиты с расширением git-am
.
git-diff
просто показывает разницу между двумя состояниями, которые вы запрашиваете, и может использоваться для создания файла исправления. Но это обычный файл исправления, и его применение просто изменит состояние рабочего каталога.
И да, таким образом вы можете создать патч для своего индекса.
Файл патча можно сгенерировать с помощью
git diff
команды, но по сравнению с патчем, созданнымgit format-patch
командой, основные отличия заключаются в следующем:Чтобы сгенерировать файл патча для всех измененных файлов (в индексе или в рабочем каталоге):
git diff HEAD --binary > my.patch # git diff + git diff --cached/staged == git diff HEAD
Чтобы применить сгенерированный файл патча:
# restore the changed files firstly git restore --staged . git restore . # apply the patch to redo the changes git apply my.patch # or patch -p1 < my.patch
источник