Home Explore Blog CI



git

4th chunk of `Documentation/git-apply.adoc`
ec9389e4730ecd1d8b3e5a99e1f823f9a24a33b61f2cdce90000000100000dfc
 `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

Title: Git Apply Command Options and Configuration
Summary
The Git apply command provides various options to control the patch application process, including whitespace error handling, progress reporting, and submodule updates, allowing users to customize the behavior of the command to suit their needs, with options such as --whitespace, --verbose, --quiet, and --directory, and configuration settings that can be used to fine-tune the command's behavior.