git-grep(1) =========== NAME ---- git-grep - Print lines matching a pattern SYNOPSIS -------- [verse] '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 ] [--color[=] | --no-color] [-A ] [-B ] [-C ] [-f ] [-e] [--and|--or|--not|(|)|-e ...] [--cached | --no-index | ...] [--] [...] 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 :: For each given on command line, descend at most 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[=]:: 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] :: Show `context` trailing (`A` -- after), or leading (`B` -- before), or both (`C` -- context) lines, and place a line containing `--` between contiguous groups of matches. -:: A shortcut for specifying `-C`. -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 linkgit:gitattributes[5]). -f :: Read patterns from , 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. ...:: 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 limiters. ...:: 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 , later revamped by Junio C Hamano. Documentation -------------- Documentation by Junio C Hamano and the git-list . GIT --- Part of the linkgit:git[1] suite