українська мова ▾ Topics ▾ Latest version ▾ git-apply last updated in 2.51.0

НАЗВА

git-apply - Застосувати патч до файлів та/або до індексу

СИНОПСИС

git apply [--stat] [--numstat] [--summary] [--check]
	  [--index | --intent-to-add] [--3way] [--ours | --theirs | --union]
	  [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
	  [--allow-binary-replacement | --binary] [--reject] [-z]
	  [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
	  [--ignore-space-change | --ignore-whitespace]
	  [--whitespace=(nowarn|warn|fix|error|error-all)]
	  [--exclude=<path>] [--include=<path>] [--directory=<root>]
	  [--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>…​]

ОПИС

Зчитує наданий вивід diff (тобто "патч") та застосовує його до файлів. Під час запуску з підкаталогу в репозиторії, виправлені шляхи поза каталогом ігноруються. З опцією --index патч також застосовується до індексу, а з опцією --cached патч застосовується лише до індексу. Без цих опцій команда застосовує патч лише до файлів і не вимагає їхньої присутності в репозиторії Git.

Ця команда застосовує патч, але не створює коміт. Використовуйте git-am[1] для створення комітів з патчів, згенерованих git-format-patch[1] та/або отриманих електронною поштою.

ОПЦІЇ

<patch>…​

Файли, з яких потрібно зчитувати патч. - можна використовувати для зчитування зі стандартного вводу.

--stat

Замість застосування патчу, виведіть diffstat для вхідних даних. Вимикає функцію "застосувати".

--numstat

Подібно до --stat, але показує кількість доданих та видалених рядків у десятковому форматі та шлях без скорочень, щоб зробити його зручнішим для машинного обчислення. Для бінарних файлів виводить два - замість 0 0. Вимикає "застосувати".

--summary

Замість застосування патчу, виведіть стислий виклад інформації, отриманої з розширених заголовків git diff, такої як створення, перейменування та зміни режиму. Вимикає "застосувати".

--check

Замість застосування патчу, перевірте, чи він застосовується до поточного робочого дерева та/або індексного файлу, і чи виявляє він помилки. Вимикає функцію "застосувати".

--index

Застосуйте патч як до індексу, так і до робочого дерева (або просто перевірте, чи він застосовуватиметься чисто до обох, якщо активовано --check). Зверніть увагу, що --index очікує, що записи індексу та копії робочого дерева для відповідних шляхів будуть ідентичними (їхній вміст та метадані, такі як режим файлу, повинні збігатися), і викличе помилку, якщо вони не збігаються, навіть якщо патч застосовуватиметься чисто як до індексу, так і до робочого дерева окремо.

--cached

Застосуйте латку лише до індексу, не торкаючись робочого дерева. Якщо активовано параметр --check, просто перевірте, чи вона буде коректно застосовуватися до запису індексу.

-N
--intent-to-add

Якщо ви застосовуєте патч лише до робочого дерева, позначте нові файли для додавання до індексу пізніше (див. опцію --intent-to-add у git-add[1]). Ця опція ігнорується, якщо використовуються --index або --cached, і не має жодного ефекту поза репозиторієм Git. Зверніть увагу, що --index може матися на увазі під іншими опціями, такими як --3way.

-3
--3way

Спробуйте тристороннє об’єднання, якщо патч записує ідентифікацію блобів, до яких він має застосовуватися, і ці блоби доступні локально, можливо, залишаючи маркери конфліктів у файлах робочого дерева для вирішення користувачем. Цей параметр передбачає параметр --index, якщо не використовується параметр --cached, і несумісний з параметром --reject. При використанні з параметром --cached будь-які конфлікти залишаються на вищих рівнях кешу.

--ours
--theirs
--union

Замість того, щоб залишати конфлікти у файлі, вирішуйте їх на користь нашої (або їхньої, або обох) сторони. Потрібно --3way.

--build-fake-ancestor=<file>

У новішому виводі «git diff» вбудовано «інформацію про індекс» для кожного блобу, щоб допомогти ідентифікувати оригінальну версію, до якої застосовується патч. Коли цей прапорець встановлено, і якщо оригінальні версії блобів доступні локально, створюється тимчасовий індекс, що містить ці блоби.

Коли відбувається чиста зміна режиму (яка не має інформації про індекс), інформація зчитується з поточного індексу.

-R
--reverse

Наклейте пластир у зворотному порядку.

--reject

Для атомарності, «git apply» за замовчуванням не запускає весь патч і не торкається робочого дерева, якщо деякі з ханків не застосовуються. Ця опція дозволяє застосувати ті частини патча, які є застосовними, а відхилені ханки залишати у відповідних файлах *.rej.

-z

Якщо задано параметр --numstat, не змінюйте шляхи, а використовуйте машинно-читаний формат із NUL-закінченням.

Без цієї опції шляхи з «незвичайними» символами взяті в лапки, як пояснено для змінної конфігурації core.quotePath (див. git-config[1]).

-p<n>

Видалити <n> початкових компонентів шляху (розділених склесами) з традиційних шляхів diff. Наприклад, з параметром -p2, патч для a/dir/file буде застосовано безпосередньо до file. Значення за замовчуванням — 1.

-C<n>

Переконайтеся, що принаймні <n> рядків навколишнього контексту збігаються до та після кожної зміни. Якщо рядків навколишнього контексту менше, всі вони повинні збігатися. За замовчуванням жоден контекст ніколи не ігнорується.

--unidiff-zero

За замовчуванням, «git apply» очікує, що застосовуваний патч буде уніфікованим diff принаймні з одним рядком контексту. Це забезпечує хороші заходи безпеки, але не працює під час застосування diff, згенерованого з --unified=0. Щоб обійти ці перевірки, використовуйте --unidiff-zero.

Зверніть увагу, що з причин, зазначених вище, використання контекстно-вільних патчів не рекомендується.

--apply

Якщо ви використовуєте будь-який із параметрів, позначених вище як «Вимикає застосувати», git apply зчитує та виводить запитувану інформацію без фактичного застосування патчу. Встановіть цей прапорець після цих прапорців, щоб також застосувати патч.

--no-add

Під час застосування патчу ігноруйте додавання, внесені патчем. Це можна використовувати для вилучення спільної частини між двома файлами, спочатку запустивши команду «diff» для них та застосувавши результат з цією опцією, що призведе до застосування частини видалення, але не частини додавання.

--allow-binary-replacement
--binary

Історично ми не дозволяли застосування бінарних патчів без явного дозволу користувача, і цей прапорець був способом це зробити. Наразі ми завжди дозволяємо застосування бінарних патчів, тому це заборонено.

--exclude=<path-pattern>

Не застосовувати зміни до файлів, що відповідають заданому шаблону шляху. Це може бути корисним під час імпорту наборів патчів, де потрібно виключити певні файли або каталоги.

--include=<path-pattern>

Застосовувати зміни до файлів, що відповідають заданому шаблону шляху. Це може бути корисним під час імпорту наборів патчів, куди потрібно включити певні файли або каталоги.

Коли використовуються шаблони --exclude та --include, вони перевіряються в порядку їх появи в командному рядку, і перший збіг визначає, чи використовується патч для кожного шляху. Патч для шляху, який не відповідає жодному шаблону включення/виключення, використовується за замовчуванням, якщо в командному рядку немає шаблону включення, та ігнорується, якщо будь-який шаблон включення є.

--ignore-space-change
--ignore-whitespace

Під час застосування патчу, за потреби, ігноруйте зміни пробілів у рядках контексту. Рядки контексту збережуть свої пробіли та не будуть виправлені незалежно від значення опції --whitespace. Однак нові рядки все одно будуть виправлені.

--whitespace=<action>

Під час застосування патчу виявляти новий або змінений рядок, який містить помилки пробілів. Те, що вважається помилками пробілів, контролюється конфігурацією core.whitespace. За замовчуванням, кінцеві пробіли (включно з рядками, що складаються виключно з пробілів) та символ пробілу, одразу за яким йде символ табуляції всередині початкового відступу рядка, вважаються помилками пробілів.

За замовчуванням команда виводить попередження, але застосовує патч. Коли git-apply використовується для статистики, а патч не застосовується, за замовчуванням використовується nowarn.

Ви можете використовувати різні значення <action> для керування цією поведінкою:

  • nowarn вимикає попередження про пробіли в кінці.

  • warn виводить попередження для кількох таких помилок, але застосовує патч як є (за замовчуванням).

  • fix виводить попередження для кількох таких помилок та застосовує патч після їх виправлення (strip є синонімом — інструмент, який використовується для розгляду лише пробілів у кінці як помилок, а виправлення включало їх «видалення», але сучасні Gits роблять більше).

  • error виводить попередження для кількох таких помилок та відмовляється застосовувати виправлення.

  • error-all схоже на error, але показує всі помилки.

--inaccurate-eof

За певних обставин деякі версії «diff» неправильно виявляють відсутній символ нового рядка в кінці файлу. Як наслідок, патчі, створені такими програмами «diff», неправильно записують неповні рядки. Ця опція додає підтримку для застосування таких патчів, обходячи цю помилку.

-v
--verbose

Повідомляти про прогрес на stderr. За замовчуванням буде виведено лише повідомлення про поточний застосований патч. Ця опція призведе до повідомлення додаткової інформації.

-q
--quiet

Придушити вивід stderr. Повідомлення про стан та прогрес виправлення не будуть виведені.

--recount

Не довіряйте кількості рядків у заголовках ханка, а зробіть висновки про неї, перевіривши патч (наприклад, після редагування патча без належного налаштування заголовків ханка).

--directory=<root>

Додати <root> до всіх імен файлів. Якщо також було передано аргумент "-p", він застосовується перед додаванням нового кореневого тегу на початку.

Наприклад, патч, який описує оновлення a/git-gui.sh до b/git-gui.sh, можна застосувати до файлу в робочому дереві modules/git-gui/git-gui.sh, виконавши команду git apply --directory=modules/git-gui.

--unsafe-paths

За замовчуванням, патч, який впливає на область поза робочою областю (або робоче дерево, кероване Git, або поточний робочий каталог, коли "git apply" використовується як заміна GNU patch), відхиляється як помилка (або шахрайство).

Коли git apply використовується як "кращий патч GNU", користувач може передати опцію --unsafe-paths, щоб перевизначити цю перевірку безпеки. Ця опція не має ефекту, коли використовується --index або --cached..

--allow-empty

Не повертати помилку для патчів, що не містять різниці. Це включає порожні патчі та патчі, що містять лише текст коміту.

КОНФІГУРАЦІЯ

Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:

Warning

Missing uk/config/apply.adoc

See original version for this content.

ПІДМОДУЛІ

Якщо патч містить будь-які зміни до підмодулів, то git apply обробляє ці зміни наступним чином.

Якщо вказано --index (явно чи неявно), то для застосування патчу коміти підмодулів повинні точно відповідати індексу. Якщо будь-який із підмодулів виведено з експлуатації, то ці виведення повністю ігноруються, тобто вони не потребують оновлення або чистоти, і вони не оновлюються.

Якщо --index не вказано, то коміти підмодулів у патчі ігноруються, і перевіряється та (якщо можливо) оновлюється лише відсутність або наявність відповідного підкаталогу.

ДИВ. ТАКОЖ

GIT

Частина набору git[1]