В чем разница между 'git format-patch и 'git diff'?
Я не вижу разницы между выводом "git format-patch" и "git diff", есть ли? И разве я не смогу использовать "git diff" для создания патча, а затем применить его с помощью Git apply?
моя проблема заключается в том, что у меня есть изменения, добавленные в индекс, но, по-видимому, git format-patch принимает только коммиты, поэтому если я могу использовать вывод diff, то я могу использовать эту команду для создания патча для изменений в индексе:
git diff --cached > index.patch
2 ответа:
патч, созданный с помощью
git format-patch
также будет включать некоторую метаинформацию о фиксации (committer, date, commit message,...) и будет содержать diff двоичных данных. Все будет отформатировано как почта, так что его можно легко отправить. Человек, который получает его, может затем воссоздать соответствующую фиксацию сgit am
и все метаданные будут нетронуты. Он также может быть применен сgit apply
как это супер-набор простой diff.патч упакован с
git diff
будет a простой diff с контекстом (думаюdiff -u
). Он также может быть применен сgit apply
но метаданные не будут воссозданы (так как их нет).в целом,
git format-patch
полезно передавать фиксацию, в то время какgit diff
полезно, чтобы получить разницу между двумя деревьями.
от руководства git-format-patch готовит патчи подходят для отправки по электронной почте, в то время как git-diff показывает изменения.
это две разные вещи и имеют разные цели, они просто выводят формат патча. Но
git-format-patch
добавляет данные о фиксации (дата, Автор, Сообщение фиксации) и связывает их в формат, который подходит для отправки в виде почтового сообщения Unix (хотя это всего лишь файлы, поэтому их можно отправлять другим методам и по-прежнему применяется git-am).и
git-format-patch
создает файл исправлений для каждой фиксации в указанном диапазоне. Эти изменения будут добавлены как фиксации в ваш репозиторий с помощьюgit-am
.
git-diff
просто показывает разницу между двумя состояниями, которые вы просите, и может быть использован для создания файла патча. Но это всего лишь обычный файл патча, и применение патча просто изменит состояние рабочего каталога.и да, вы можете создать патч для своего индекса такой образ.