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

NAME
----
git-apply - Apply patch on a git index file and a work tree


SYNOPSIS
--------
[verse]
'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply]
	  [--no-add] [--index-info] [--allow-binary-replacement | --binary]
	  [-R | --reverse] [--reject] [-z] [-pNUM] [-CNUM] [--inaccurate-eof]
	  [--whitespace=<nowarn|warn|error|error-all|strip>] [--exclude=PATH]
	  [--cached] [--verbose] [<patch>...]

DESCRIPTION
-----------
Reads supplied diff output and applies it on a git index file
and a work tree.

OPTIONS
-------
<patch>...::
	The files to read 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 number of added and
	deleted lines in decimal notation and 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 work tree and/or the index
	file and detects errors.  Turns off "apply".

--index::
	When --check is in effect, or when applying the patch
	(which is the default when none of the options that
	disables it is in effect), make sure the patch is
	applicable to what the current index file records.  If
	the file to be patched in the work tree is not
	up-to-date, it is flagged as an error.  This flag also
	causes the index file to be updated.

--cached::
	Apply a patch without touching the working tree. Instead, take the
	cached data, apply the patch, and store the result in the index,
	without using the working tree. This implies '--index'.

--index-info::
	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 version of the blob is available locally,
	outputs information about them to the standard output.

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

--reject::
	For atomicity, gitlink:git-apply[1] 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 showing the index information, do not munge paths,
	but use NUL terminated machine readable format.  Without
	this flag, the pathnames output will have TAB, LF, and
	backslash characters replaced with `\t`, `\n`, and `\\`,
	respectively.

-p<n>::
	Remove <n> leading slashes from traditional diff paths. 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, gitlink:git-apply[1] 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 usage of context-free patches are
discouraged.

--apply::
	If you use any of the options marked "Turns off
	'apply'" above, gitlink:git-apply[1] reads and outputs the
	information you asked 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 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 addition part.

--allow-binary-replacement, --binary::
	Historically we did not allow binary patch applied
	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.

--whitespace=<option>::
	When applying a patch, detect a new or modified line
	that ends with trailing whitespaces (this includes a
	line that solely consists of whitespaces).  By default,
	the command outputs warning messages and applies the
	patch.
	When gitlink:git-apply[1] is used for statistics and not applying a
	patch, it defaults to `nowarn`.
	You can use different `<option>` to control this
	behavior:
+
* `nowarn` turns off the trailing whitespace warning.
* `warn` outputs warnings for a few such errors, but applies the
  patch (default).
* `error` outputs warnings for a few such errors, and refuses
  to apply the patch.
* `error-all` is similar to `error` but shows all errors.
* `strip` outputs warnings for a few such errors, strips out the
  trailing whitespaces and applies the patch.

--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.

--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.

Configuration
-------------

apply.whitespace::
	When no `--whitespace` flag is given from the command
	line, this configuration item is used as the default.


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by Junio C Hamano

GIT
---
Part of the gitlink:git[7] suite

