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