git-grep − Print lines matching a pattern |
git grep [−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] [−q | −−quiet] [−−max−depth <depth>] [−−color[=<when>] | −−no−color] [−A <post−context>] [−B <pre−context>] [−C <context>] [−f <file>] [−e] <pattern> [−−and|−−or|−−not|(|)|−e <pattern>...] [−−cached | −−no−index | <tree>...] [−−] [<pathspec>...] |
Look for specified patterns in the tracked files in the work tree, blobs registered in the index file, or blobs in given tree objects. |
−−cached |
Instead of searching tracked files in the working tree, search blobs registered in the index file. |
−−no−index |
Search files in the current directory, not just those tracked by git. |
−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 <depth> |
For each <pathspec> given on command line, descend at most <depth> 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[=<when>] |
Show colored matches. The value must be always (the default), never, or auto. |
−−no−color |
Turn off match highlighting, even when the configuration file gives the default to color output. Same as −−color=never. |
−[ABC] <context> |
Show context trailing (A — after), or leading (B — before), or both (C — context) lines, and place a line containing −− between contiguous groups of matches. |
−<num> |
A shortcut for specifying −C<num>. |
−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 gitattributes(5)). |
−f <file> |
Read patterns from <file>, 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. |
−q, −−quiet |
Do not output matched lines; instead, exit with status 0 when there is a match and with non−zero status when there isn’t. |
<tree>... |
Instead of searching tracked files in the working tree, search blobs in the given trees. |
−− |
Signals the end of options; the rest of the parameters are <pathspec> limiters. |
<pathspec>... |
If given, limit the search to paths matching at least one pattern. Both leading paths match and glob(7) patterns are supported. |
git grep time_t — *.[ch] |
Looks for time_t in all tracked .c and .h files in the working directory and its subdirectories. |
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. |
Originally written by Linus Torvalds <torvalds@osdl.org [1] >, later revamped by Junio C Hamano. |
Documentation by Junio C Hamano and the git−list <git@vger.kernel.org [2] >. |
Part of the git(1) suite |
1. |
torvalds@osdl.org |
mailto:torvalds@osdl.org |
2. |
git@vger.kernel.org |
mailto:git@vger.kernel.org |