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