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 compatability 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[7] suite