Documentation / git-apply.txton commit Merge branch 'db/vcs-helper' (cd03eeb)
   1git-apply(1)
   2============
   3
   4NAME
   5----
   6git-apply - Apply a patch on a git index file and/or a working tree
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git apply' [--stat] [--numstat] [--summary] [--check] [--index]
  13          [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
  14          [--allow-binary-replacement | --binary] [--reject] [-z]
  15          [-pNUM] [-CNUM] [--inaccurate-eof] [--recount] [--cached]
  16          [--ignore-space-change | --ignore-whitespace ]
  17          [--whitespace=<nowarn|warn|fix|error|error-all>]
  18          [--exclude=PATH] [--include=PATH] [--directory=<root>]
  19          [--verbose] [<patch>...]
  20
  21DESCRIPTION
  22-----------
  23Reads supplied 'diff' output and applies it on a git index file
  24and a work tree.
  25
  26OPTIONS
  27-------
  28<patch>...::
  29        The files to read the patch from.  '-' can be used to read
  30        from the standard input.
  31
  32--stat::
  33        Instead of applying the patch, output diffstat for the
  34        input.  Turns off "apply".
  35
  36--numstat::
  37        Similar to \--stat, but shows the number of added and
  38        deleted lines in decimal notation and the pathname without
  39        abbreviation, to make it more machine friendly.  For
  40        binary files, outputs two `-` instead of saying
  41        `0 0`.  Turns off "apply".
  42
  43--summary::
  44        Instead of applying the patch, output a condensed
  45        summary of information obtained from git diff extended
  46        headers, such as creations, renames and mode changes.
  47        Turns off "apply".
  48
  49--check::
  50        Instead of applying the patch, see if the patch is
  51        applicable to the current work tree and/or the index
  52        file and detects errors.  Turns off "apply".
  53
  54--index::
  55        When --check is in effect, or when applying the patch
  56        (which is the default when none of the options that
  57        disables it is in effect), make sure the patch is
  58        applicable to what the current index file records.  If
  59        the file to be patched in the work tree is not
  60        up-to-date, it is flagged as an error.  This flag also
  61        causes the index file to be updated.
  62
  63--cached::
  64        Apply a patch without touching the working tree. Instead take the
  65        cached data, apply the patch, and store the result in the index
  66        without using the working tree. This implies '--index'.
  67
  68--build-fake-ancestor=<file>::
  69        Newer 'git-diff' output has embedded 'index information'
  70        for each blob to help identify the original version that
  71        the patch applies to.  When this flag is given, and if
  72        the original versions of the blobs are available locally,
  73        builds a temporary index containing those blobs.
  74+
  75When a pure mode change is encountered (which has no index information),
  76the information is read from the current index instead.
  77
  78-R::
  79--reverse::
  80        Apply the patch in reverse.
  81
  82--reject::
  83        For atomicity, 'git-apply' by default fails the whole patch and
  84        does not touch the working tree when some of the hunks
  85        do not apply.  This option makes it apply
  86        the parts of the patch that are applicable, and leave the
  87        rejected hunks in corresponding *.rej files.
  88
  89-z::
  90        When showing the index information, do not munge paths,
  91        but use NUL terminated machine readable format.  Without
  92        this flag, the pathnames output will have TAB, LF, and
  93        backslash characters replaced with `\t`, `\n`, and `\\`,
  94        respectively.
  95
  96-p<n>::
  97        Remove <n> leading slashes from traditional diff paths. The
  98        default is 1.
  99
 100-C<n>::
 101        Ensure at least <n> lines of surrounding context match before
 102        and after each change.  When fewer lines of surrounding
 103        context exist they all must match.  By default no context is
 104        ever ignored.
 105
 106--unidiff-zero::
 107        By default, 'git-apply' expects that the patch being
 108        applied is a unified diff with at least one line of context.
 109        This provides good safety measures, but breaks down when
 110        applying a diff generated with --unified=0. To bypass these
 111        checks use '--unidiff-zero'.
 112+
 113Note, for the reasons stated above usage of context-free patches is
 114discouraged.
 115
 116--apply::
 117        If you use any of the options marked "Turns off
 118        'apply'" above, 'git-apply' reads and outputs the
 119        requested information without actually applying the
 120        patch.  Give this flag after those flags to also apply
 121        the patch.
 122
 123--no-add::
 124        When applying a patch, ignore additions made by the
 125        patch.  This can be used to extract the common part between
 126        two files by first running 'diff' on them and applying
 127        the result with this option, which would apply the
 128        deletion part but not the addition part.
 129
 130--allow-binary-replacement::
 131--binary::
 132        Historically we did not allow binary patch applied
 133        without an explicit permission from the user, and this
 134        flag was the way to do so.  Currently we always allow binary
 135        patch application, so this is a no-op.
 136
 137--exclude=<path-pattern>::
 138        Don't apply changes to files matching the given path pattern. This can
 139        be useful when importing patchsets, where you want to exclude certain
 140        files or directories.
 141
 142--include=<path-pattern>::
 143        Apply changes to files matching the given path pattern. This can
 144        be useful when importing patchsets, where you want to include certain
 145        files or directories.
 146+
 147When --exclude and --include patterns are used, they are examined in the
 148order they appear on the command line, and the first match determines if a
 149patch to each path is used.  A patch to a path that does not match any
 150include/exclude pattern is used by default if there is no include pattern
 151on the command line, and ignored if there is any include pattern.
 152
 153--ignore-space-change::
 154--ignore-whitespace::
 155        When applying a patch, ignore changes in whitespace in context
 156        lines if necessary.
 157        Context lines will preserve their whitespace, and they will not
 158        undergo whitespace fixing regardless of the value of the
 159        `--whitespace` option. New lines will still be fixed, though.
 160
 161--whitespace=<action>::
 162        When applying a patch, detect a new or modified line that has
 163        whitespace errors.  What are considered whitespace errors is
 164        controlled by `core.whitespace` configuration.  By default,
 165        trailing whitespaces (including lines that solely consist of
 166        whitespaces) and a space character that is immediately followed
 167        by a tab character inside the initial indent of the line are
 168        considered whitespace errors.
 169+
 170By default, the command outputs warning messages but applies the patch.
 171When `git-apply` is used for statistics and not applying a
 172patch, it defaults to `nowarn`.
 173+
 174You can use different `<action>` values to control this
 175behavior:
 176+
 177* `nowarn` turns off the trailing whitespace warning.
 178* `warn` outputs warnings for a few such errors, but applies the
 179  patch as-is (default).
 180* `fix` outputs warnings for a few such errors, and applies the
 181  patch after fixing them (`strip` is a synonym --- the tool
 182  used to consider only trailing whitespace characters as errors, and the
 183  fix involved 'stripping' them, but modern gits do more).
 184* `error` outputs warnings for a few such errors, and refuses
 185  to apply the patch.
 186* `error-all` is similar to `error` but shows all errors.
 187
 188--inaccurate-eof::
 189        Under certain circumstances, some versions of 'diff' do not correctly
 190        detect a missing new-line at the end of the file. As a result, patches
 191        created by such 'diff' programs do not record incomplete lines
 192        correctly. This option adds support for applying such patches by
 193        working around this bug.
 194
 195-v::
 196--verbose::
 197        Report progress to stderr. By default, only a message about the
 198        current patch being applied will be printed. This option will cause
 199        additional information to be reported.
 200
 201--recount::
 202        Do not trust the line counts in the hunk headers, but infer them
 203        by inspecting the patch (e.g. after editing the patch without
 204        adjusting the hunk headers appropriately).
 205
 206--directory=<root>::
 207        Prepend <root> to all filenames.  If a "-p" argument was also passed,
 208        it is applied before prepending the new root.
 209+
 210For example, a patch that talks about updating `a/git-gui.sh` to `b/git-gui.sh`
 211can be applied to the file in the working tree `modules/git-gui/git-gui.sh` by
 212running `git apply --directory=modules/git-gui`.
 213
 214Configuration
 215-------------
 216
 217apply.ignorewhitespace::
 218        Set to 'change' if you want changes in whitespace to be ignored by default.
 219        Set to one of: no, none, never, false if you want changes in
 220        whitespace to be significant.
 221apply.whitespace::
 222        When no `--whitespace` flag is given from the command
 223        line, this configuration item is used as the default.
 224
 225Submodules
 226----------
 227If the patch contains any changes to submodules then 'git-apply'
 228treats these changes as follows.
 229
 230If --index is specified (explicitly or implicitly), then the submodule
 231commits must match the index exactly for the patch to apply.  If any
 232of the submodules are checked-out, then these check-outs are completely
 233ignored, i.e., they are not required to be up-to-date or clean and they
 234are not updated.
 235
 236If --index is not specified, then the submodule commits in the patch
 237are ignored and only the absence or presence of the corresponding
 238subdirectory is checked and (if possible) updated.
 239
 240Author
 241------
 242Written by Linus Torvalds <torvalds@osdl.org>
 243
 244Documentation
 245--------------
 246Documentation by Junio C Hamano
 247
 248GIT
 249---
 250Part of the linkgit:git[1] suite