Documentation / git-grep.txton commit diff-tree -r -t: include added/removed directories in the output (df533f3)
   1git-grep(1)
   2===========
   3
   4NAME
   5----
   6git-grep - Print lines matching a pattern
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git grep' [--cached]
  13           [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
  14           [-v | --invert-match] [-h|-H] [--full-name]
  15           [-E | --extended-regexp] [-G | --basic-regexp]
  16           [-F | --fixed-strings] [-n]
  17           [-l | --files-with-matches] [-L | --files-without-match]
  18           [-c | --count] [--all-match]
  19           [-A <post-context>] [-B <pre-context>] [-C <context>]
  20           [-f <file>] [-e] <pattern>
  21           [--and|--or|--not|(|)|-e <pattern>...] [<tree>...]
  22           [--] [<path>...]
  23
  24DESCRIPTION
  25-----------
  26Look for specified patterns in the working tree files, blobs
  27registered in the index file, or given tree objects.
  28
  29
  30OPTIONS
  31-------
  32--cached::
  33        Instead of searching in the working tree files, check
  34        the blobs registered in the index file.
  35
  36-a::
  37--text::
  38        Process binary files as if they were text.
  39
  40-i::
  41--ignore-case::
  42        Ignore case differences between the patterns and the
  43        files.
  44
  45-I::
  46        Don't match the pattern in binary files.
  47
  48-w::
  49--word-regexp::
  50        Match the pattern only at word boundary (either begin at the
  51        beginning of a line, or preceded by a non-word character; end at
  52        the end of a line or followed by a non-word character).
  53
  54-v::
  55--invert-match::
  56        Select non-matching lines.
  57
  58-h::
  59-H::
  60        By default, the command shows the filename for each
  61        match.  `-h` option is used to suppress this output.
  62        `-H` is there for completeness and does not do anything
  63        except it overrides `-h` given earlier on the command
  64        line.
  65
  66--full-name::
  67        When run from a subdirectory, the command usually
  68        outputs paths relative to the current directory.  This
  69        option forces paths to be output relative to the project
  70        top directory.
  71
  72-E::
  73--extended-regexp::
  74-G::
  75--basic-regexp::
  76        Use POSIX extended/basic regexp for patterns.  Default
  77        is to use basic regexp.
  78
  79-F::
  80--fixed-strings::
  81        Use fixed strings for patterns (don't interpret pattern
  82        as a regex).
  83
  84-n::
  85        Prefix the line number to matching lines.
  86
  87-l::
  88--files-with-matches::
  89--name-only::
  90-L::
  91--files-without-match::
  92        Instead of showing every matched line, show only the
  93        names of files that contain (or do not contain) matches.
  94        For better compatibility with 'git-diff', --name-only is a
  95        synonym for --files-with-matches.
  96
  97-c::
  98--count::
  99        Instead of showing every matched line, show the number of
 100        lines that match.
 101
 102-[ABC] <context>::
 103        Show `context` trailing (`A` -- after), or leading (`B`
 104        -- before), or both (`C` -- context) lines, and place a
 105        line containing `--` between contiguous groups of
 106        matches.
 107
 108-<num>::
 109        A shortcut for specifying -C<num>.
 110
 111-f <file>::
 112        Read patterns from <file>, one per line.
 113
 114-e::
 115        The next parameter is the pattern. This option has to be
 116        used for patterns starting with - and should be used in
 117        scripts passing user input to grep.  Multiple patterns are
 118        combined by 'or'.
 119
 120--and::
 121--or::
 122--not::
 123( ... )::
 124        Specify how multiple patterns are combined using Boolean
 125        expressions.  `--or` is the default operator.  `--and` has
 126        higher precedence than `--or`.  `-e` has to be used for all
 127        patterns.
 128
 129--all-match::
 130        When giving multiple pattern expressions combined with `--or`,
 131        this flag is specified to limit the match to files that
 132        have lines to match all of them.
 133
 134`<tree>...`::
 135        Search blobs in the trees for specified patterns.
 136
 137\--::
 138        Signals the end of options; the rest of the parameters
 139        are <path> limiters.
 140
 141
 142Example
 143-------
 144
 145git grep -e \'#define\' --and \( -e MAX_PATH -e PATH_MAX \)::
 146        Looks for a line that has `#define` and either `MAX_PATH` or
 147        `PATH_MAX`.
 148
 149git grep --all-match -e NODE -e Unexpected::
 150        Looks for a line that has `NODE` or `Unexpected` in
 151        files that have lines that match both.
 152
 153Author
 154------
 155Originally written by Linus Torvalds <torvalds@osdl.org>, later
 156revamped by Junio C Hamano.
 157
 158
 159Documentation
 160--------------
 161Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 162
 163GIT
 164---
 165Part of the linkgit:git[1] suite