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] [-c | --count] [--all-match] [-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. -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. -c:: --count:: Instead of showing every matched line, show the number of lines that match. -[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. -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