В чем разница между '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просто показывает разницу между двумя состояниями, которые вы просите, и может быть использован для создания файла патча. Но это всего лишь обычный файл патча, и применение патча просто изменит состояние рабочего каталога.и да, вы можете создать патч для своего индекса такой образ.