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.53.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 [--stat] [--numstat] [--summary] [--check] [--index | --intent-to-add] [--3way] [--ours | --theirs | --union] [--apply] [--no-add] [--build-fake-ancestor=<файл>] [-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=<путь>] [--include=<путь>] [--directory=<корень>] [--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<патч>…]
ОПИСАНИЕ
Читает предоставленный вывод 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
-
Пытается выполнить трёхстороннее слияние, если патч записывает идентификаторы blob, к которым он должен применяться, и эти blob доступны локально, возможно оставляя маркеры конфликтов в файлах рабочего дерева для разрешения пользователем. Эта опция подразумевает опцию
--index, если не используется опция--cached, и несовместима с опцией--reject. При использовании с опцией--cachedлюбые конфликты остаются на более высоких стадиях в кэше. - --ours
- --theirs
- --union
-
Вместо оставления конфликтов в файле разрешает конфликты в пользу нашей (или их, или обеих) стороны строк. Требует --3way.
- --build-fake-ancestor=<file>
-
Более новые выводы git diff содержат встроенную информацию об индексе для каждого blob, чтобы помочь идентифицировать исходную версию, к которой применяется патч. При указании этого флага, если исходные версии blob доступны локально, создаётся временный индекс, содержащий эти blob.
При обнаружении чистого изменения режима (у которого нет информации об индексе) информация считывается из текущего индекса.
- -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они проверяются в том порядке, в котором появляются в командной строке, и первое совпадение определяет, будет ли использован патч для каждого пути. Патч для пути, который не соответствует ни одному шаблону include/exclude, используется по умолчанию, если в командной строке нет шаблона include, и игнорируется, если есть любой шаблон include. - --ignore-space-change
- --ignore-whitespace
-
When applying a patch, ignore changes in whitespace in context lines if necessary. Context lines will preserve their whitespace, and they will not undergo whitespace fixing regardless of the value of the
--whitespaceoption. New lines will still be fixed, though. - --whitespace=<action>
-
При применении патча обнаруживает новую или изменённую строку, содержащую ошибки пробелов. То, что считается ошибками пробелов, контролируется конфигурацией
core.whitespace. По умолчанию завершающие пробелы (включая строки, состоящие исключительно из пробелов) и символ пробела, за которым немедленно следует символ табуляции внутри начального отступа строки, считаются ошибками пробелов.По умолчанию команда выводит предупреждения, но применяет патч. Когда
git-applyиспользуется для статистики, а не для применения патча, по умолчанию используетсяnowarn.Вы можете использовать различные значения <действие> для управления этим поведением:
-
nowarnотключает предупреждение о завершающих пробелах. -
warnвыводит предупреждения для некоторых таких ошибок, но применяет патч как есть (по умолчанию). -
fixвыводит предупреждения для некоторых таких ошибок и применяет патч после их исправления (stripявляется синонимом — инструмент раньше считал только завершающие пробельные символы ошибками, и исправление заключалось в их "удалении", но современные Git делают больше). -
errorвыводит предупреждения для некоторых таких ошибок и отказывается применять патч. -
error-allаналогичноerror, но показывает все ошибки.
-
- --inaccurate-eof
-
При определённых обстоятельствах некоторые версии diff не могут корректно обнаружить отсутствие перевода строки в конце файла. В результате патчи, созданные такими программами diff, не записывают неполные строки правильно. Эта опция добавляет поддержку применения таких патчей, обходя эту ошибку.
- -v
- --verbose
-
Сообщает о прогрессе в stderr. По умолчанию печатается только сообщение о применяемом в данный момент патче. Эта опция заставляет выводить дополнительную информацию.
- -q
- --quiet
-
Подавляет вывод в stderr. Сообщения о состоянии патча и прогрессе печататься не будут.
- --recount
-
Не доверяет подсчётам строк в заголовках блоков, а выводит их путём проверки патча (например, после редактирования патча без соответствующей настройки заголовков блоков).
- --directory=<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 patch", пользователь может передать опцию--unsafe-pathsдля обхода этой проверки безопасности. Эта опция не имеет эффекта, когда используются--indexили--cached. - --allow-empty
-
Не возвращает ошибку для патчей, не содержащих diff. Это включает пустые патчи и патчи только с текстом коммита.
КОНФИГУРАЦИЯ
Дальнейшее содержание этого раздела, повторяет то, что может быть найдено в git-config[1]:
|
Warning
|
Missing See original version for this content. |
ПОДМОДУЛИ
Если патч содержит любые изменения подмодулей, то git apply обрабатывает эти изменения следующим образом.
Если указан --index (явно или неявно), то коммиты подмодулей должны точно соответствовать индексу, чтобы патч применился. Если какие-либо подмодули извлечены, то эти извлечения полностью игнорируются, т.е. они не обязаны быть актуальными или чистыми, и они не обновляются.
Если --index не указан, то коммиты подмодулей в патче игнорируются, и проверяется только отсутствие или наличие соответствующего подкаталога и (если возможно) обновляется.
GIT
Является частью пакета git[1]