Как мой клиент может применить патч, созданный с помощью git diff
без git?
Я попытался использовать команду patch
, но всегда запрашивает имя файла для исправления.
Как установить патч `git diff` без Git?
Ответ 1
git diff > patchfile
и
patch -p1 < patchfile
работает, но как многие люди замечают в комментариях и других ответах, патч не понимает добавляет, удаляет и переименовывает. Нет опции, но git apply patchfile
, если вам нужен файл дескриптора, который добавляет, удаляет и переименовывает.
EDIT Декабрь 2015
Последние версии команды patch
(2.7, выпущенные в сентябре 2012 года) поддерживают большинство функций формата "diff - git", включая переименования и копии, изменения разрешений и diff symlink (но еще не бинарные различия ) (релиз объявления).
Таким образом, если вы используете текущую/последнюю версию patch
, нет необходимости использовать git
, чтобы использовать ее diff как патч.
Ответ 2
попробуйте следующее:
patch -p1 < patchfile
Ответ 3
Используйте
git apply patchfile
если возможно.
patch -p1 < patchfile
имеет потенциальный побочный эффект.
git apply
также обрабатывает файлы, добавляет, удаляет и переименовывает, если они описаны в формате git diff
, который patch
не будет выполнять. Наконец, git apply
представляет собой модель "применить все или прервать все", где либо применяется все, либо ничего нет, тогда как патч может частично применять файлы исправлений, оставляя ваш рабочий каталог в странном состоянии.
Ответ 4
Я использую
patch -p1 --merge < patchfile
Таким образом, конфликты могут быть разрешены, как обычно.
Ответ 5
Попробуйте следующее:
$ git apply file.diff