1git-grep(1) 2=========== 3 4NAME 5---- 6git-grep - Print lines matching a pattern 7 8 9SYNOPSIS 10-------- 11[verse] 12'git grep' [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp] 13 [-v | --invert-match] [-h|-H] [--full-name] 14 [-E | --extended-regexp] [-G | --basic-regexp] 15 [-P | --perl-regexp] 16 [-F | --fixed-strings] [-n | --line-number] 17 [-l | --files-with-matches] [-L | --files-without-match] 18 [(-O | --open-files-in-pager) [<pager>]] 19 [-z | --null] 20 [-c | --count] [--all-match] [-q | --quiet] 21 [--max-depth <depth>] 22 [--color[=<when>] | --no-color] 23 [--break] [--heading] [-p | --show-function] 24 [-A <post-context>] [-B <pre-context>] [-C <context>] 25 [-W | --function-context] 26 [-f <file>] [-e] <pattern> 27 [--and|--or|--not|(|)|-e <pattern>...] 28 [ [--exclude-standard] [--cached | --no-index | --untracked] | <tree>...] 29 [--] [<pathspec>...] 30 31DESCRIPTION 32----------- 33Look for specified patterns in the tracked files in the work tree, blobs 34registered in the index file, or blobs in given tree objects. Patterns 35are lists of one or more search expressions separated by newline 36characters. An empty string as search expression matches all lines. 37 38 39CONFIGURATION 40------------- 41 42grep.lineNumber:: 43 If set to true, enable '-n' option by default. 44 45grep.extendedRegexp:: 46 If set to true, enable '--extended-regexp' option by default. 47 48 49OPTIONS 50------- 51--cached:: 52 Instead of searching tracked files in the working tree, search 53 blobs registered in the index file. 54 55--no-index:: 56 Search files in the current directory that is not managed by git. 57 58--untracked:: 59 In addition to searching in the tracked files in the working 60 tree, search also in untracked files. 61 62--no-exclude-standard:: 63 Also search in ignored files by not honoring the `.gitignore` 64 mechanism. Only useful with `--untracked`. 65 66--exclude-standard:: 67 Do not pay attention to ignored files specified via the `.gitignore` 68 mechanism. Only useful when searching files in the current directory 69 with `--no-index`. 70 71-a:: 72--text:: 73 Process binary files as if they were text. 74 75-i:: 76--ignore-case:: 77 Ignore case differences between the patterns and the 78 files. 79 80-I:: 81 Don't match the pattern in binary files. 82 83--max-depth <depth>:: 84 For each <pathspec> given on command line, descend at most <depth> 85 levels of directories. A negative value means no limit. 86 This option is ignored if <pathspec> contains active wildcards. 87 In other words if "a*" matches a directory named "a*", 88 "*" is matched literally so --max-depth is still effective. 89 90-w:: 91--word-regexp:: 92 Match the pattern only at word boundary (either begin at the 93 beginning of a line, or preceded by a non-word character; end at 94 the end of a line or followed by a non-word character). 95 96-v:: 97--invert-match:: 98 Select non-matching lines. 99 100-h:: 101-H:: 102 By default, the command shows the filename for each 103 match. `-h` option is used to suppress this output. 104 `-H` is there for completeness and does not do anything 105 except it overrides `-h` given earlier on the command 106 line. 107 108--full-name:: 109 When run from a subdirectory, the command usually 110 outputs paths relative to the current directory. This 111 option forces paths to be output relative to the project 112 top directory. 113 114-E:: 115--extended-regexp:: 116-G:: 117--basic-regexp:: 118 Use POSIX extended/basic regexp for patterns. Default 119 is to use basic regexp. 120 121-P:: 122--perl-regexp:: 123 Use Perl-compatible regexp for patterns. Requires libpcre to be 124 compiled in. 125 126-F:: 127--fixed-strings:: 128 Use fixed strings for patterns (don't interpret pattern 129 as a regex). 130 131-n:: 132--line-number:: 133 Prefix the line number to matching lines. 134 135-l:: 136--files-with-matches:: 137--name-only:: 138-L:: 139--files-without-match:: 140 Instead of showing every matched line, show only the 141 names of files that contain (or do not contain) matches. 142 For better compatibility with 'git diff', `--name-only` is a 143 synonym for `--files-with-matches`. 144 145-O [<pager>]:: 146--open-files-in-pager [<pager>]:: 147 Open the matching files in the pager (not the output of 'grep'). 148 If the pager happens to be "less" or "vi", and the user 149 specified only one pattern, the first file is positioned at 150 the first match automatically. 151 152-z:: 153--null:: 154 Output \0 instead of the character that normally follows a 155 file name. 156 157-c:: 158--count:: 159 Instead of showing every matched line, show the number of 160 lines that match. 161 162--color[=<when>]:: 163 Show colored matches. 164 The value must be always (the default), never, or auto. 165 166--no-color:: 167 Turn off match highlighting, even when the configuration file 168 gives the default to color output. 169 Same as `--color=never`. 170 171--break:: 172 Print an empty line between matches from different files. 173 174--heading:: 175 Show the filename above the matches in that file instead of 176 at the start of each shown line. 177 178-p:: 179--show-function:: 180 Show the preceding line that contains the function name of 181 the match, unless the matching line is a function name itself. 182 The name is determined in the same way as 'git diff' works out 183 patch hunk headers (see 'Defining a custom hunk-header' in 184 linkgit:gitattributes[5]). 185 186-<num>:: 187-C <num>:: 188--context <num>:: 189 Show <num> leading and trailing lines, and place a line 190 containing `--` between contiguous groups of matches. 191 192-A <num>:: 193--after-context <num>:: 194 Show <num> trailing lines, and place a line containing 195 `--` between contiguous groups of matches. 196 197-B <num>:: 198--before-context <num>:: 199 Show <num> leading lines, and place a line containing 200 `--` between contiguous groups of matches. 201 202-W:: 203--function-context:: 204 Show the surrounding text from the previous line containing a 205 function name up to the one before the next function name, 206 effectively showing the whole function in which the match was 207 found. 208 209-f <file>:: 210 Read patterns from <file>, one per line. 211 212-e:: 213 The next parameter is the pattern. This option has to be 214 used for patterns starting with `-` and should be used in 215 scripts passing user input to grep. Multiple patterns are 216 combined by 'or'. 217 218--and:: 219--or:: 220--not:: 221( ... ):: 222 Specify how multiple patterns are combined using Boolean 223 expressions. `--or` is the default operator. `--and` has 224 higher precedence than `--or`. `-e` has to be used for all 225 patterns. 226 227--all-match:: 228 When giving multiple pattern expressions combined with `--or`, 229 this flag is specified to limit the match to files that 230 have lines to match all of them. 231 232-q:: 233--quiet:: 234 Do not output matched lines; instead, exit with status 0 when 235 there is a match and with non-zero status when there isn't. 236 237<tree>...:: 238 Instead of searching tracked files in the working tree, search 239 blobs in the given trees. 240 241\--:: 242 Signals the end of options; the rest of the parameters 243 are <pathspec> limiters. 244 245<pathspec>...:: 246 If given, limit the search to paths matching at least one pattern. 247 Both leading paths match and glob(7) patterns are supported. 248 249Examples 250-------- 251 252`git grep 'time_t' -- '*.[ch]'`:: 253 Looks for `time_t` in all tracked .c and .h files in the working 254 directory and its subdirectories. 255 256`git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)`:: 257 Looks for a line that has `#define` and either `MAX_PATH` or 258 `PATH_MAX`. 259 260`git grep --all-match -e NODE -e Unexpected`:: 261 Looks for a line that has `NODE` or `Unexpected` in 262 files that have lines that match both. 263 264GIT 265--- 266Part of the linkgit:git[1] suite