Man Linux: Main Page and Category List

NAME

       git-grep - Print lines matching a pattern

SYNOPSIS

       git grep [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
                  [-v | --invert-match] [-h|-H] [--full-name]
                  [-E | --extended-regexp] [-G | --basic-regexp]
                  [-F | --fixed-strings] [-n]
                  [-l | --files-with-matches] [-L | --files-without-match]
                  [-z | --null]
                  [-c | --count] [--all-match] [-q | --quiet]
                  [--max-depth <depth>]
                  [--color[=<when>] | --no-color]
                  [-A <post-context>] [-B <pre-context>] [-C <context>]
                  [-f <file>] [-e] <pattern>
                  [--and|--or|--not|(|)|-e <pattern>...]
                  [--cached | --no-index | <tree>...]
                  [--] [<pathspec>...]

DESCRIPTION

       Look for specified patterns in the tracked files in the work tree,
       blobs registered in the index file, or blobs in given tree objects.

OPTIONS

       --cached
           Instead of searching tracked files in the working tree, search
           blobs registered in the index file.

       --no-index
           Search files in the current directory, not just those tracked by
           git.

       -a, --text
           Process binary files as if they were text.

       -i, --ignore-case
           Ignore case differences between the patterns and the files.

       -I
           Don't match the pattern in binary files.

       --max-depth <depth>
           For each <pathspec> given on command line, descend at most <depth>
           levels of directories. A negative value means no limit.

       -w, --word-regexp
           Match the pattern only at word boundary (either begin at the
           beginning of a line, or preceded by a non-word character; end at
           the end of a line or followed by a non-word character).

       -v, --invert-match
           Select non-matching lines.

       -h, -H
           By default, the command shows the filename for each match.  -h
           option is used to suppress this output.  -H is there for
           completeness and does not do anything except it overrides -h given
           earlier on the command line.

       --full-name
           When run from a subdirectory, the command usually outputs paths
           relative to the current directory. This option forces paths to be
           output relative to the project top directory.

       -E, --extended-regexp, -G, --basic-regexp
           Use POSIX extended/basic regexp for patterns. Default is to use
           basic regexp.

       -F, --fixed-strings
           Use fixed strings for patterns (don't interpret pattern as a
           regex).

       -n
           Prefix the line number to matching lines.

       -l, --files-with-matches, --name-only, -L, --files-without-match
           Instead of showing every matched line, show only the names of files
           that contain (or do not contain) matches. For better compatibility
           with git diff, --name-only is a synonym for --files-with-matches.

       -z, --null
           Output \0 instead of the character that normally follows a file
           name.

       -c, --count
           Instead of showing every matched line, show the number of lines
           that match.

       --color[=<when>]
           Show colored matches. The value must be always (the default),
           never, or auto.

       --no-color
           Turn off match highlighting, even when the configuration file gives
           the default to color output. Same as --color=never.

       -[ABC] <context>
           Show context trailing (A -- after), or leading (B
            -- before), or both (C -- context) lines, and place a line
           containing -- between contiguous groups of matches.

       -<num>
           A shortcut for specifying -C<num>.

       -p, --show-function
           Show the preceding line that contains the function name of the
           match, unless the matching line is a function name itself. The name
           is determined in the same way as git diff works out patch hunk
           headers (see Defining a custom hunk-header in gitattributes(5)).

       -f <file>
           Read patterns from <file>, one per line.

       -e
           The next parameter is the pattern. This option has to be used for
           patterns starting with - and should be used in scripts passing user
           input to grep. Multiple patterns are combined by or.

       --and, --or, --not, ( ... )
           Specify how multiple patterns are combined using Boolean
           expressions.  --or is the default operator.  --and has higher
           precedence than --or.  -e has to be used for all patterns.

       --all-match
           When giving multiple pattern expressions combined with --or, this
           flag is specified to limit the match to files that have lines to
           match all of them.

       -q, --quiet
           Do not output matched lines; instead, exit with status 0 when there
           is a match and with non-zero status when there isn't.

       <tree>...
           Instead of searching tracked files in the working tree, search
           blobs in the given trees.

       --
           Signals the end of options; the rest of the parameters are
           <pathspec> limiters.

       <pathspec>...
           If given, limit the search to paths matching at least one pattern.
           Both leading paths match and glob(7) patterns are supported.

EXAMPLES

       git grep time_t -- *.[ch]
           Looks for time_t in all tracked .c and .h files in the working
           directory and its subdirectories.

       git grep -e '#define\' --and \( -e MAX_PATH -e PATH_MAX \)
           Looks for a line that has #define and either MAX_PATH or PATH_MAX.

       git grep --all-match -e NODE -e Unexpected
           Looks for a line that has NODE or Unexpected in files that have
           lines that match both.

AUTHOR

       Originally written by Linus Torvalds <torvalds@osdl.org[1]>, later
       revamped by Junio C Hamano.

DOCUMENTATION

       Documentation by Junio C Hamano and the git-list
       <git@vger.kernel.org[2]>.

GIT

       Part of the git(1) suite

NOTES

        1. torvalds@osdl.org
           mailto:torvalds@osdl.org

        2. git@vger.kernel.org
           mailto:git@vger.kernel.org