Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.51.1 → 2.54.0 no changes
-
2.51.0
2025-08-18
- 2.47.1 → 2.50.1 no changes
-
2.47.0
2024-10-06
- 2.43.1 → 2.46.4 no changes
-
2.43.0
2023-11-20
- 2.40.1 → 2.42.4 no changes
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.32.1 → 2.34.8 no changes
-
2.32.0
2021-06-06
- 2.29.1 → 2.31.8 no changes
-
2.29.0
2020-10-19
- 2.19.1 → 2.28.1 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.16.6 → 2.17.6 no changes
-
2.15.4
2019-12-06
- 2.14.6 no changes
-
2.13.7
2018-05-22
- 2.9.5 → 2.12.5 no changes
-
2.8.6
2017-07-30
- 2.5.6 → 2.7.6 no changes
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
НАЗВА
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 для вхідних даних. Вимикає функцію "apply".
- --numstat
-
Подібно до
--stat, але показує кількість доданих та видалених рядків у десятковому форматі та шлях без скорочень, щоб зробити його зручнішим для машинного обчислення. Для бінарних файлів виводить два-замість00. Вимикає "apply". - --summary
-
Замість застосування латки, виводить скорочений підсумок інформації, отриманої з розширених заголовків git diff, такої як створення, перейменування та зміни режиму. Вимикає "apply".
- --check
-
Замість того, щоб застосовувати латку, перевірте, чи підходить він до поточного робочого дерева та/або індексного файлу, і чи виявляє він помилки. Вимикає функцію «apply».
- --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
-
Якщо ви використовуєте будь-який із параметрів, позначених вище як «Вимикає 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, шляхом виконання командиgitapply--directory=modules/git-gui. - --unsafe-paths
-
Зазвичай, латка, що має вплив поза робочою областю (або робоче дерево, кероване Git, або поточна робоча тека, коли "git apply" використовується як заміна GNU patch), відхиляється як помилка (або шахрайство).
Коли
gitapplyвикористовується як "краща латка GNU", користувач може передати опцію--unsafe-paths, щоб перевизначити цю перевірку безпеки. Ця опція не має ефекту, коли використовується--indexабо--cached.. - --allow-empty
-
Не повертати помилку для латок, що не містять різниці. Це включає порожні латки та латки, що містять лише текст коміту.
КОНФІГУРАЦІЯ
Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:
|
Warning
|
Missing See original version for this content. |
СУБМОДУЛІ
Якщо латка містить будь-які зміни до субмодулів, то git apply обробляє ці зміни наступним чином.
Якщо вказано параметр --index (явно чи неявно), то для застосування латки коміти субмодулів повинні точно відповідати індексу. Якщо будь-які субмодулі завантажено, то ці завантаження повністю ігноруються, тобто вони не повинні бути актуальними чи чистими, і їх не оновлюють.
Якщо --index не вказано, то коміти субмодулів у латці ігноруються, і перевіряється та (якщо можливо) оновлюється лише відсутність або наявність відповідної субтеки.
GIT
Частина набору git[1]