Home Explore Blog CI



git

2nd chunk of `Documentation/git-apply.adoc`
7d2959b5c6840f62676936c4a1b817ed9f88e97e4e1729730000000100000fa2
 `--index` is not specified.
	Note that `--index` could be implied by other options such
	as `--cached` or `--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

Title: Git Apply Options
Summary
The git apply command offers various options to control the patch application process, including 3-way merge, conflict resolution, and detailed output options, as well as filters for file paths, allowing users to customize the application of patches to suit their needs, with features like reverse application, rejection of hunks, and context matching, and path exclusion and inclusion patterns to selectively apply changes.