Як мій клієнт може застосувати патч, створений git diff
без встановленого git? Я намагався використовувати patch
команду, але вона завжди просить ім'я файлу для виправлення.
patch
цей формат не повністю підтримує.
Як мій клієнт може застосувати патч, створений git diff
без встановленого git? Я намагався використовувати patch
команду, але вона завжди просить ім'я файлу для виправлення.
patch
цей формат не повністю підтримує.
Відповіді:
git diff > patchfile
і
patch -p1 < patchfile
робота, але як багато людей помітили в коментарях та інших відповідях, патч не розуміє додавання, видалення та перейменування. Немає жодної опції, але git apply patchfile
якщо вам потрібна обробка файлів, додає, видаляє та перейменовує файли.
EDIT грудень 2015 року
Останні версії patch
команди (2.7, випущені у вересні 2012 року) підтримують більшість функцій формату "diff --git", включаючи перейменування та копії, зміни дозволів та розширення символьного посилання (але ще не є бінарним розходженням) ( оголошення про випуск ).
Таким чином, за умови використання поточної / останньої версії patch
немає необхідності використовувати, git
щоб мати можливість застосовувати його diff як виправлення.
git diff > patchfile
, алеpatch -p1 < patchfile
relative
опцією, як:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfile
не вимагає встановлення git. Перша команда демонструє команду для генерації diff, не застосовуючи її.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfile
абоgit diff from_branch to_branch > patchfile; ...
Використовуйте
git apply patchfile
якщо можливо.
patch -p1 < patchfile
має потенційний побічний ефект.
git apply
також обробляє додавання, видалення та перейменування файлів, якщо вони описані у git diff
форматі, що patch
не буде робити. Нарешті, git apply
це модель "застосувати всіх або перервати все", де застосовується або все, або нічого немає, тоді як патч може частково застосовувати файли патчів, залишаючи ваш робочий каталог у дивному стані.
git apply
це найкращий спосіб зробити це, але це питання спеціально задає питання, як застосувати патч без встановлення Git .
--dry-run --verbose
корисні для визначення того, які побічні ефекти будуть, якщо такі є. (використовуючи патч v2.5.8)
git apply patchfile -
... єдина відповідна відповідь ..." - це майже смішно. Кожен раз, коли розробники OpenSSL надсилають мені патч для тестування, Git не вдається застосувати його. Це щоразу . Я ще не бачив, як цей дурний інструмент застосовує виправлення.
я використовую
patch -p1 --merge < patchfile
Таким чином конфлікти можуть бути вирішені як завжди.