blob: 3bec0368831a04bc3653f11d3a0b1bff5a335907 [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-grep(1)
2===========
3
4NAME
5----
Junio C Hamano01078922006-03-10 00:31:476git-grep - Print lines matching a pattern
Junio C Hamano1a4e8412005-12-27 08:17:237
8
9SYNOPSIS
10--------
Junio C Hamano617fdb82006-05-16 02:14:2111[verse]
Junio C Hamano636c8b22010-03-07 22:25:1712'git grep' [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
Junio C Hamano97efb002006-09-16 18:16:0413 [-v | --invert-match] [-h|-H] [--full-name]
Junio C Hamano9882a522007-04-27 08:22:2214 [-E | --extended-regexp] [-G | --basic-regexp]
Junio C Hamano084228c2011-05-30 08:13:5215 [-P | --perl-regexp]
16 [-F | --fixed-strings] [-n | --line-number]
Junio C Hamano9882a522007-04-27 08:22:2217 [-l | --files-with-matches] [-L | --files-without-match]
Junio C Hamano7d449522010-07-01 00:08:5118 [(-O | --open-files-in-pager) [<pager>]]
Junio C Hamanoa476efa2008-10-10 15:31:4219 [-z | --null]
Junio C Hamano83b35472010-01-29 05:02:1320 [-c | --count] [--all-match] [-q | --quiet]
Junio C Hamano9f883862009-08-11 06:23:5221 [--max-depth <depth>]
Junio C Hamano4aa0bcc2010-03-03 05:13:1222 [--color[=<when>] | --no-color]
Junio C Hamano0ff98162012-03-31 18:19:0923 [--break] [--heading] [-p | --show-function]
Junio C Hamano617fdb82006-05-16 02:14:2124 [-A <post-context>] [-B <pre-context>] [-C <context>]
Junio C Hamano0ff98162012-03-31 18:19:0925 [-W | --function-context]
Junio C Hamano9882a522007-04-27 08:22:2226 [-f <file>] [-e] <pattern>
Junio C Hamano636c8b22010-03-07 22:25:1727 [--and|--or|--not|(|)|-e <pattern>...]
Junio C Hamano5a73f302011-10-14 05:58:3428 [ [--exclude-standard] [--cached | --no-index | --untracked] | <tree>...]
Junio C Hamano74a198f2010-02-22 00:13:3129 [--] [<pathspec>...]
Junio C Hamano1a4e8412005-12-27 08:17:2330
31DESCRIPTION
32-----------
Junio C Hamano74a198f2010-02-22 00:13:3133Look for specified patterns in the tracked files in the work tree, blobs
Junio C Hamano0364a712012-05-25 20:02:3634registered 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.
Junio C Hamano1a4e8412005-12-27 08:17:2337
38
Junio C Hamanoa03ac862011-04-02 04:32:2939CONFIGURATION
40-------------
41
42grep.lineNumber::
43If set to true, enable '-n' option by default.
44
45grep.extendedRegexp::
46If set to true, enable '--extended-regexp' option by default.
47
48
Junio C Hamano1a4e8412005-12-27 08:17:2349OPTIONS
50-------
Junio C Hamano617fdb82006-05-16 02:14:2151--cached::
Junio C Hamano636c8b22010-03-07 22:25:1752Instead of searching tracked files in the working tree, search
53blobs registered in the index file.
54
55--no-index::
Junio C Hamano5a73f302011-10-14 05:58:3456Search files in the current directory that is not managed by git.
57
58--untracked::
59In addition to searching in the tracked files in the working
60tree, search also in untracked files.
61
62--no-exclude-standard::
63Also search in ignored files by not honoring the `.gitignore`
64mechanism. Only useful with `--untracked`.
65
66--exclude-standard::
67Do not pay attention to ignored files specified via the `.gitignore`
68mechanism. Only useful when searching files in the current directory
69with `--no-index`.
Junio C Hamano617fdb82006-05-16 02:14:2170
Junio C Hamanoeb415992008-06-08 22:49:4771-a::
72--text::
Junio C Hamano617fdb82006-05-16 02:14:2173Process binary files as if they were text.
74
Junio C Hamanoeb415992008-06-08 22:49:4775-i::
76--ignore-case::
Junio C Hamano617fdb82006-05-16 02:14:2177Ignore case differences between the patterns and the
78files.
79
Junio C Hamano9882a522007-04-27 08:22:2280-I::
81Don't match the pattern in binary files.
82
Junio C Hamano9f883862009-08-11 06:23:5283--max-depth <depth>::
Junio C Hamano74a198f2010-02-22 00:13:3184For each <pathspec> given on command line, descend at most <depth>
Junio C Hamano9f883862009-08-11 06:23:5285levels of directories. A negative value means no limit.
Junio C Hamanobfeab4e2012-01-19 00:51:2786This option is ignored if <pathspec> contains active wildcards.
87In other words if "a*" matches a directory named "a*",
88"*" is matched literally so --max-depth is still effective.
Junio C Hamano9f883862009-08-11 06:23:5289
Junio C Hamanoeb415992008-06-08 22:49:4790-w::
91--word-regexp::
Junio C Hamano617fdb82006-05-16 02:14:2192Match the pattern only at word boundary (either begin at the
93beginning of a line, or preceded by a non-word character; end at
94the end of a line or followed by a non-word character).
95
Junio C Hamanoeb415992008-06-08 22:49:4796-v::
97--invert-match::
Junio C Hamano617fdb82006-05-16 02:14:2198Select non-matching lines.
99
Junio C Hamanoeb415992008-06-08 22:49:47100-h::
101-H::
Junio C Hamano97efb002006-09-16 18:16:04102By default, the command shows the filename for each
103match. `-h` option is used to suppress this output.
104`-H` is there for completeness and does not do anything
105except it overrides `-h` given earlier on the command
106line.
107
Junio C Hamano85e45fa2006-08-13 07:47:41108--full-name::
109When run from a subdirectory, the command usually
110outputs paths relative to the current directory. This
111option forces paths to be output relative to the project
112top directory.
113
Junio C Hamanoeb415992008-06-08 22:49:47114-E::
115--extended-regexp::
116-G::
117--basic-regexp::
Junio C Hamano617fdb82006-05-16 02:14:21118Use POSIX extended/basic regexp for patterns. Default
119is to use basic regexp.
120
Junio C Hamano084228c2011-05-30 08:13:52121-P::
122--perl-regexp::
123Use Perl-compatible regexp for patterns. Requires libpcre to be
124compiled in.
125
Junio C Hamanoeb415992008-06-08 22:49:47126-F::
127--fixed-strings::
Junio C Hamano9882a522007-04-27 08:22:22128Use fixed strings for patterns (don't interpret pattern
129as a regex).
130
Junio C Hamano617fdb82006-05-16 02:14:21131-n::
Junio C Hamano2906d342011-03-29 02:19:17132--line-number::
Junio C Hamano617fdb82006-05-16 02:14:21133Prefix the line number to matching lines.
134
Junio C Hamanoeb415992008-06-08 22:49:47135-l::
136--files-with-matches::
137--name-only::
138-L::
139--files-without-match::
Junio C Hamano617fdb82006-05-16 02:14:21140Instead of showing every matched line, show only the
141names of files that contain (or do not contain) matches.
Junio C Hamano636c8b22010-03-07 22:25:17142For better compatibility with 'git diff', `--name-only` is a
143synonym for `--files-with-matches`.
Junio C Hamano617fdb82006-05-16 02:14:21144
Junio C Hamano7d449522010-07-01 00:08:51145-O [<pager>]::
146--open-files-in-pager [<pager>]::
147Open the matching files in the pager (not the output of 'grep').
148If the pager happens to be "less" or "vi", and the user
149specified only one pattern, the first file is positioned at
150the first match automatically.
151
Junio C Hamanoa476efa2008-10-10 15:31:42152-z::
153--null::
154Output \0 instead of the character that normally follows a
155file name.
156
Junio C Hamanoeb415992008-06-08 22:49:47157-c::
158--count::
Junio C Hamano617fdb82006-05-16 02:14:21159Instead of showing every matched line, show the number of
160lines that match.
161
Junio C Hamano4aa0bcc2010-03-03 05:13:12162--color[=<when>]::
Junio C Hamanod257cff2009-03-18 05:27:16163Show colored matches.
Junio C Hamano4aa0bcc2010-03-03 05:13:12164The value must be always (the default), never, or auto.
Junio C Hamanod257cff2009-03-18 05:27:16165
166--no-color::
167Turn off match highlighting, even when the configuration file
168gives the default to color output.
Junio C Hamano4aa0bcc2010-03-03 05:13:12169Same as `--color=never`.
Junio C Hamanod257cff2009-03-18 05:27:16170
Junio C Hamano4c4b0122011-06-30 01:19:32171--break::
172Print an empty line between matches from different files.
173
174--heading::
175Show the filename above the matches in that file instead of
176at the start of each shown line.
177
Junio C Hamano48bc1ce2009-07-09 16:49:19178-p::
179--show-function::
180Show the preceding line that contains the function name of
181the match, unless the matching line is a function name itself.
182The name is determined in the same way as 'git diff' works out
183patch hunk headers (see 'Defining a custom hunk-header' in
184linkgit:gitattributes[5]).
185
Junio C Hamano9775d402011-08-11 22:27:20186-<num>::
187-C <num>::
188--context <num>::
189Show <num> leading and trailing lines, and place a line
190containing `--` between contiguous groups of matches.
191
192-A <num>::
193--after-context <num>::
194Show <num> trailing lines, and place a line containing
195`--` between contiguous groups of matches.
196
197-B <num>::
198--before-context <num>::
199Show <num> leading lines, and place a line containing
200`--` between contiguous groups of matches.
201
202-W::
203--function-context::
204Show the surrounding text from the previous line containing a
205function name up to the one before the next function name,
206effectively showing the whole function in which the match was
207found.
208
Junio C Hamano617fdb82006-05-16 02:14:21209-f <file>::
210Read patterns from <file>, one per line.
211
Junio C Hamano3901ffb2006-06-26 23:46:53212-e::
213The next parameter is the pattern. This option has to be
Junio C Hamano636c8b22010-03-07 22:25:17214used for patterns starting with `-` and should be used in
Junio C Hamano00442022006-08-03 00:29:36215scripts passing user input to grep. Multiple patterns are
216combined by 'or'.
217
Junio C Hamanoeb415992008-06-08 22:49:47218--and::
219--or::
220--not::
221( ... )::
Junio C Hamanof9771f62007-01-17 17:42:30222Specify how multiple patterns are combined using Boolean
Junio C Hamano00442022006-08-03 00:29:36223expressions. `--or` is the default operator. `--and` has
224higher precedence than `--or`. `-e` has to be used for all
225patterns.
Junio C Hamano3901ffb2006-06-26 23:46:53226
Junio C Hamanofbe00522006-10-19 05:58:48227--all-match::
228When giving multiple pattern expressions combined with `--or`,
229this flag is specified to limit the match to files that
230have lines to match all of them.
231
Junio C Hamano83b35472010-01-29 05:02:13232-q::
233--quiet::
234Do not output matched lines; instead, exit with status 0 when
235there is a match and with non-zero status when there isn't.
236
Junio C Hamano636c8b22010-03-07 22:25:17237<tree>...::
238Instead of searching tracked files in the working tree, search
239blobs in the given trees.
Junio C Hamano617fdb82006-05-16 02:14:21240
Junio C Hamano00442022006-08-03 00:29:36241\--::
Junio C Hamanoa6331a82006-01-22 07:50:33242Signals the end of options; the rest of the parameters
Junio C Hamano74a198f2010-02-22 00:13:31243are <pathspec> limiters.
Junio C Hamanoa6331a82006-01-22 07:50:33244
Junio C Hamano74a198f2010-02-22 00:13:31245<pathspec>...::
246If given, limit the search to paths matching at least one pattern.
247Both leading paths match and glob(7) patterns are supported.
Junio C Hamano1a4e8412005-12-27 08:17:23248
Junio C Hamano636c8b22010-03-07 22:25:17249Examples
250--------
Junio C Hamano00442022006-08-03 00:29:36251
Junio C Hamanob76a6862012-05-02 22:02:46252`git grep 'time_t' -- '*.[ch]'`::
Junio C Hamano74a198f2010-02-22 00:13:31253Looks for `time_t` in all tracked .c and .h files in the working
254directory and its subdirectories.
255
Junio C Hamanob76a6862012-05-02 22:02:46256`git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)`::
Junio C Hamano00442022006-08-03 00:29:36257Looks for a line that has `#define` and either `MAX_PATH` or
258`PATH_MAX`.
259
Junio C Hamano16ebcd02011-08-05 00:05:45260`git grep --all-match -e NODE -e Unexpected`::
Junio C Hamanofbe00522006-10-19 05:58:48261Looks for a line that has `NODE` or `Unexpected` in
262files that have lines that match both.
263
Junio C Hamano1a4e8412005-12-27 08:17:23264GIT
265---
Junio C Hamanof7c042d2008-06-06 22:50:53266Part of the linkgit:git[1] suite