git-apply(1)
============

NAME
----
git-apply - Apply a patch to files and/or to the index


SYNOPSIS
--------
[verse]
'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>...]

DESCRIPTION
-----------
Reads the supplied diff output (i.e. "a patch") and applies it to files.
When running from a subdirectory in a repository, patched paths
outside the directory are ignored.
With the `--index` option, the patch is also applied to the index, and
with the `--cached` option, the patch is only applied to the index.
Without these options, the command applies the patch only to files,
and does not require them to be in a Git repository.

This command applies the patch but does not create a commit.  Use
linkgit:git-am[1] to create commits from patches generated by
linkgit:git-format-patch[1] and/or received by email.

OPTIONS
-------
<patch>...::
	The files to read the patch from.  '-' can be used to read
	from the standard input.

--stat::
	Instead of applying the patch, output diffstat for the
	input.  Turns off "apply".

--numstat::
	Similar to `--stat`, but shows the number of added and
	deleted lines in decimal notation and the pathname without
	abbreviation, to make it more machine friendly.  For
	binary files, outputs two `-` instead of saying
	`0 0`.  Turns off "apply".

--summary::
	Instead of applying the patch, output a condensed
	summary of information obtained from git diff extended
	headers, such as creations, renames, and mode changes.
	Turns off "apply".

--check::
	Instead of applying the patch, see if the patch is
	applicable to the current working tree and/or the index
	file and detects errors.  Turns off "apply".

--index::
	Apply the patch to both the index and the working tree (or
	merely check that it would apply cleanly to both if `--check` is
	in effect). Note that `--index` expects index entries and
	working tree copies for relevant paths to be identical (their
	contents and metadata such as file mode must match), and will
	raise an error if they are not, even if the patch would apply
	cleanly to both the index and the working tree in isolation.

--cached::
	Apply the patch to just the index, without touching the working
	tree. If `--check` is in effect, merely check that it would
	apply cleanly to the index entry.

-N::
--intent-to-add::
	When applying the patch only to the working tree, mark new
	files to be added to the index later (see `--intent-to-add`
	option in linkgit:git-add[1]). This option is ignored if
	`--index` or `--cached` are used, and has no effect outside a Git
	repository. Note that `--index` could be implied by other options
	such as `--3way`.

-3::
--3way::
	Attempt 3-way merge if the patch records the identity of blobs it is supposed
	to apply to and we have those blobs available locally, possibly leaving the
	conflict markers in the files in the working tree for the user to
	resolve.  This option implies the `--index` option unless the
	`--cached` option is used, and is incompatible with the `--reject` option.
	When used with the `--cached` option, any conflicts are left at higher stages
	in the cache.

--ours::
--theirs::
--union::
	Instead of leaving conflicts in the file, resolve conflicts favouring
	our (or their or both) side of the lines. Requires --3way.

--build-fake-ancestor=<file>::
	Newer 'git diff' output has embedded 'index information'
	for each blob to help identify the original version that
	the patch applies to.  When this flag is given, and if
	the original versions of the blobs are available locally,
	builds a temporary index containing those blobs.
+
When a pure mode change is encountered (which has no index information),
the information is read from the current index instead.

-R::
--reverse::
	Apply the patch in reverse.

--reject::
	For atomicity, 'git apply' by default fails the whole patch and
	does not touch the working tree when some of the hunks
	do not apply.  This option makes it apply
	the parts of the patch that are applicable, and leave the
	rejected hunks in corresponding *.rej files.

-z::
	When `--numstat` has been given, do not munge pathnames,
	but use a NUL-terminated machine-readable format.
+
Without this option, pathnames with "unusual" characters are quoted as
explained for the configuration variable `core.quotePath` (see
linkgit:git-config[1]).

-p<n>::
	Remove <n> leading path components (separated by slashes) from
	traditional diff paths. E.g., with `-p2`, a patch against
	`a/dir/file` will be applied directly to `file`. The default is
	1.

-C<n>::
	Ensure at least <n> lines of surrounding context match before
	and after each change.  When fewer lines of surrounding
	context exist they all must match.  By default no context is
	ever ignored.

--unidiff-zero::
	By default, 'git apply' expects that the patch being
	applied is a unified diff with at least one line of context.
	This provides good safety measures, but breaks down when
	applying a diff generated with `--unified=0`. To bypass these
	checks use `--unidiff-zero`.
+
Note, for the reasons stated above, the usage of context-free patches is
discouraged.

--apply::
	If you use any of the options marked "Turns off
	'apply'" above, 'git apply' reads and outputs the
	requested information without actually applying the
	patch.  Give this flag after those flags to also apply
	the patch.

--no-add::
	When applying a patch, ignore additions made by the
	patch.  This can be used to extract the common part between
	two files by first running 'diff' on them and applying
	the result with this option, which would apply the
	deletion part but not the addition part.

--allow-binary-replacement::
--binary::
	Historically we did not allow binary patch application
	without an explicit permission from the user, and this
	flag was the way to do so.  Currently, we always allow binary
	patch application, so this is a no-op.

--exclude=<path-pattern>::
	Don't apply changes to files matching the given path pattern. This can
	be useful when importing patchsets, where you want to exclude certain
	files or directories.

--include=<path-pattern>::
	Apply changes to files matching the given path pattern. This can
	be useful when importing patchsets, where you want to include certain
	files or directories.
+
When `--exclude` and `--include` patterns are used, they are examined in the
order they appear on the command line, and the first match determines if a
patch to each path is used.  A patch to a path that does not match any
include/exclude pattern is used by default if there is no include pattern
on the command line, and ignored if there is any include pattern.

--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
	`--whitespace` option. New lines will still be fixed, though.

--whitespace=<action>::
	When applying a patch, detect a new or modified line that has
	whitespace errors.  What are considered whitespace errors is
	controlled by `core.whitespace` configuration.  By default,
	trailing whitespaces (including lines that solely consist of
	whitespaces) and a space character that is immediately followed
	by a tab character inside the initial indent of the line are
	considered whitespace errors.
+
By default, the command outputs warning messages but applies the patch.
When `git-apply` is used for statistics and not applying a
patch, it defaults to `nowarn`.
+
You can use different `<action>` values to control this
behavior:
+
* `nowarn` turns off the trailing whitespace warning.
* `warn` outputs warnings for a few such errors, but applies the
  patch as-is (default).
* `fix` outputs warnings for a few such errors, and applies the
  patch after fixing them (`strip` is a synonym -- the tool
  used to consider only trailing whitespace characters as errors, and the
  fix involved 'stripping' them, but modern Gits do more).
* `error` outputs warnings for a few such errors, and refuses
  to apply the patch.
* `error-all` is similar to `error` but shows all errors.

--inaccurate-eof::
	Under certain circumstances, some versions of 'diff' do not correctly
	detect a missing new-line at the end of the file. As a result, patches
	created by such 'diff' programs do not record incomplete lines
	correctly. This option adds support for applying such patches by
	working around this bug.

-v::
--verbose::
	Report progress to stderr. By default, only a message about the
	current patch being applied will be printed. This option will cause
	additional information to be reported.

-q::
--quiet::
	Suppress stderr output. Messages about patch status and progress
	will not be printed.

--recount::
	Do not trust the line counts in the hunk headers, but infer them
	by inspecting the patch (e.g. after editing the patch without
	adjusting the hunk headers appropriately).

--directory=<root>::
	Prepend <root> to all filenames.  If a "-p" argument was also passed,
	it is applied before prepending the new root.
+
For example, a patch that talks about updating `a/git-gui.sh` to `b/git-gui.sh`
can be applied to the file in the working tree `modules/git-gui/git-gui.sh` by
running `git apply --directory=modules/git-gui`.

--unsafe-paths::
	By default, a patch that affects outside the working area
	(either a Git controlled working tree, or the current working
	directory when "git apply" is used as a replacement of GNU
	patch) is rejected as a mistake (or a mischief).
+
When `git apply` is used as a "better GNU patch", the user can pass
the `--unsafe-paths` option to override this safety check.  This option
has no effect when `--index` or `--cached` is in use.

--allow-empty::
	Don't return an error for patches containing no diff. This includes
	empty patches and patches with commit text only.

CONFIGURATION
-------------

include::includes/cmd-config-section-all.adoc[]

include::config/apply.adoc[]

SUBMODULES
----------
If the patch contains any changes to submodules then 'git apply'
treats these changes as follows.

If `--index` is specified (explicitly or implicitly), then the submodule
commits must match the index exactly for the patch to apply.  If any
of the submodules are checked-out, then these check-outs are completely
ignored, i.e., they are not required to be up to date or clean and they
are not updated.

If `--index` is not specified, then the submodule commits in the patch
are ignored and only the absence or presence of the corresponding
subdirectory is checked and (if possible) updated.

SEE ALSO
--------
linkgit:git-am[1].

GIT
---
Part of the linkgit:git[1] suite
