git-grep(1) =========== NAME ---- git-grep - Print lines matching a pattern SYNOPSIS -------- [verse] 'git grep' [--cached] [-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] [--max-depth ] [--color | --no-color] [-A ] [-B ] [-C ] [-f ] [-e] [--and|--or|--not|(|)|-e ...] [...] [--] [...] DESCRIPTION ----------- Look for specified patterns in the working tree files, blobs registered in the index file, or given tree objects. OPTIONS ------- --cached:: Instead of searching in the working tree files, check the blobs registered in the index file. -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 pathspec 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. --no-color:: Turn off match highlighting, even when the configuration file gives the default to color output. -[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. `...`:: Search blobs in the trees for specified patterns. \--:: Signals the end of options; the rest of the parameters are limiters. Example ------- 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