Как установить патч `git diff` без Git?

Как мой клиент может применить патч, созданный с помощью git diff без git? Я попытался использовать команду patch, но всегда запрашивает имя файла для исправления.

Ответ 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