git-grep.1   [plain text]


'\" t
.\"     Title: git-grep
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
.\"      Date: 02/24/2014
.\"    Manual: Git Manual
.\"    Source: Git 1.9.0
.\"  Language: English
.\"
.TH "GIT\-GREP" "1" "02/24/2014" "Git 1\&.9\&.0" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-grep \- Print lines matching a pattern
.SH "SYNOPSIS"
.sp
.nf
\fIgit grep\fR [\-a | \-\-text] [\-I] [\-\-textconv] [\-i | \-\-ignore\-case] [\-w | \-\-word\-regexp]
           [\-v | \-\-invert\-match] [\-h|\-H] [\-\-full\-name]
           [\-E | \-\-extended\-regexp] [\-G | \-\-basic\-regexp]
           [\-P | \-\-perl\-regexp]
           [\-F | \-\-fixed\-strings] [\-n | \-\-line\-number]
           [\-l | \-\-files\-with\-matches] [\-L | \-\-files\-without\-match]
           [(\-O | \-\-open\-files\-in\-pager) [<pager>]]
           [\-z | \-\-null]
           [\-c | \-\-count] [\-\-all\-match] [\-q | \-\-quiet]
           [\-\-max\-depth <depth>]
           [\-\-color[=<when>] | \-\-no\-color]
           [\-\-break] [\-\-heading] [\-p | \-\-show\-function]
           [\-A <post\-context>] [\-B <pre\-context>] [\-C <context>]
           [\-W | \-\-function\-context]
           [\-f <file>] [\-e] <pattern>
           [\-\-and|\-\-or|\-\-not|(|)|\-e <pattern>\&...]
           [ [\-\-[no\-]exclude\-standard] [\-\-cached | \-\-no\-index | \-\-untracked] | <tree>\&...]
           [\-\-] [<pathspec>\&...]
.fi
.sp
.SH "DESCRIPTION"
.sp
Look for specified patterns in the tracked files in the work tree, blobs registered in the index file, or blobs in given tree objects\&. Patterns are lists of one or more search expressions separated by newline characters\&. An empty string as search expression matches all lines\&.
.SH "CONFIGURATION"
.PP
grep\&.lineNumber
.RS 4
If set to true, enable
\fI\-n\fR
option by default\&.
.RE
.PP
grep\&.patternType
.RS 4
Set the default matching behavior\&. Using a value of
\fIbasic\fR,
\fIextended\fR,
\fIfixed\fR, or
\fIperl\fR
will enable the
\fI\-\-basic\-regexp\fR,
\fI\-\-extended\-regexp\fR,
\fI\-\-fixed\-strings\fR, or
\fI\-\-perl\-regexp\fR
option accordingly, while the value
\fIdefault\fR
will return to the default matching behavior\&.
.RE
.PP
grep\&.extendedRegexp
.RS 4
If set to true, enable
\fI\-\-extended\-regexp\fR
option by default\&. This option is ignored when the
\fIgrep\&.patternType\fR
option is set to a value other than
\fIdefault\fR\&.
.RE
.SH "OPTIONS"
.PP
\-\-cached
.RS 4
Instead of searching tracked files in the working tree, search blobs registered in the index file\&.
.RE
.PP
\-\-no\-index
.RS 4
Search files in the current directory that is not managed by Git\&.
.RE
.PP
\-\-untracked
.RS 4
In addition to searching in the tracked files in the working tree, search also in untracked files\&.
.RE
.PP
\-\-no\-exclude\-standard
.RS 4
Also search in ignored files by not honoring the
\&.gitignore
mechanism\&. Only useful with
\-\-untracked\&.
.RE
.PP
\-\-exclude\-standard
.RS 4
Do not pay attention to ignored files specified via the
\&.gitignore
mechanism\&. Only useful when searching files in the current directory with
\-\-no\-index\&.
.RE
.PP
\-a, \-\-text
.RS 4
Process binary files as if they were text\&.
.RE
.PP
\-\-textconv
.RS 4
Honor textconv filter settings\&.
.RE
.PP
\-\-no\-textconv
.RS 4
Do not honor textconv filter settings\&. This is the default\&.
.RE
.PP
\-i, \-\-ignore\-case
.RS 4
Ignore case differences between the patterns and the files\&.
.RE
.PP
\-I
.RS 4
Don\(cqt match the pattern in binary files\&.
.RE
.PP
\-\-max\-depth <depth>
.RS 4
For each <pathspec> given on command line, descend at most <depth> levels of directories\&. A negative value means no limit\&. This option is ignored if <pathspec> contains active wildcards\&. In other words if "a*" matches a directory named "a*", "*" is matched literally so \-\-max\-depth is still effective\&.
.RE
.PP
\-w, \-\-word\-regexp
.RS 4
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)\&.
.RE
.PP
\-v, \-\-invert\-match
.RS 4
Select non\-matching lines\&.
.RE
.PP
\-h, \-H
.RS 4
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\&.
.RE
.PP
\-\-full\-name
.RS 4
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\&.
.RE
.PP
\-E, \-\-extended\-regexp, \-G, \-\-basic\-regexp
.RS 4
Use POSIX extended/basic regexp for patterns\&. Default is to use basic regexp\&.
.RE
.PP
\-P, \-\-perl\-regexp
.RS 4
Use Perl\-compatible regexp for patterns\&. Requires libpcre to be compiled in\&.
.RE
.PP
\-F, \-\-fixed\-strings
.RS 4
Use fixed strings for patterns (don\(cqt interpret pattern as a regex)\&.
.RE
.PP
\-n, \-\-line\-number
.RS 4
Prefix the line number to matching lines\&.
.RE
.PP
\-l, \-\-files\-with\-matches, \-\-name\-only, \-L, \-\-files\-without\-match
.RS 4
Instead of showing every matched line, show only the names of files that contain (or do not contain) matches\&. For better compatibility with
\fIgit diff\fR,
\-\-name\-only
is a synonym for
\-\-files\-with\-matches\&.
.RE
.PP
\-O [<pager>], \-\-open\-files\-in\-pager [<pager>]
.RS 4
Open the matching files in the pager (not the output of
\fIgrep\fR)\&. If the pager happens to be "less" or "vi", and the user specified only one pattern, the first file is positioned at the first match automatically\&.
.RE
.PP
\-z, \-\-null
.RS 4
Output \e0 instead of the character that normally follows a file name\&.
.RE
.PP
\-c, \-\-count
.RS 4
Instead of showing every matched line, show the number of lines that match\&.
.RE
.PP
\-\-color[=<when>]
.RS 4
Show colored matches\&. The value must be always (the default), never, or auto\&.
.RE
.PP
\-\-no\-color
.RS 4
Turn off match highlighting, even when the configuration file gives the default to color output\&. Same as
\-\-color=never\&.
.RE
.PP
\-\-break
.RS 4
Print an empty line between matches from different files\&.
.RE
.PP
\-\-heading
.RS 4
Show the filename above the matches in that file instead of at the start of each shown line\&.
.RE
.PP
\-p, \-\-show\-function
.RS 4
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
\fIgit diff\fR
works out patch hunk headers (see
\fIDefining a custom hunk\-header\fR
in
\fBgitattributes\fR(5))\&.
.RE
.PP
\-<num>, \-C <num>, \-\-context <num>
.RS 4
Show <num> leading and trailing lines, and place a line containing
\-\-
between contiguous groups of matches\&.
.RE
.PP
\-A <num>, \-\-after\-context <num>
.RS 4
Show <num> trailing lines, and place a line containing
\-\-
between contiguous groups of matches\&.
.RE
.PP
\-B <num>, \-\-before\-context <num>
.RS 4
Show <num> leading lines, and place a line containing
\-\-
between contiguous groups of matches\&.
.RE
.PP
\-W, \-\-function\-context
.RS 4
Show the surrounding text from the previous line containing a function name up to the one before the next function name, effectively showing the whole function in which the match was found\&.
.RE
.PP
\-f <file>
.RS 4
Read patterns from <file>, one per line\&.
.RE
.PP
\-e
.RS 4
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
\fIor\fR\&.
.RE
.PP
\-\-and, \-\-or, \-\-not, ( \&... )
.RS 4
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\&.
.RE
.PP
\-\-all\-match
.RS 4
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\&.
.RE
.PP
\-q, \-\-quiet
.RS 4
Do not output matched lines; instead, exit with status 0 when there is a match and with non\-zero status when there isn\(cqt\&.
.RE
.PP
<tree>\&...
.RS 4
Instead of searching tracked files in the working tree, search blobs in the given trees\&.
.RE
.PP
\-\-
.RS 4
Signals the end of options; the rest of the parameters are <pathspec> limiters\&.
.RE
.PP
<pathspec>\&...
.RS 4
If given, limit the search to paths matching at least one pattern\&. Both leading paths match and glob(7) patterns are supported\&.
.RE
.SH "EXAMPLES"
.PP
git grep \(aqtime_t\(aq \-\- \(aq*\&.[ch]\(aq
.RS 4
Looks for
time_t
in all tracked \&.c and \&.h files in the working directory and its subdirectories\&.
.RE
.PP
git grep \-e \(aq#define\(aq \-\-and \e( \-e MAX_PATH \-e PATH_MAX \e)
.RS 4
Looks for a line that has
#define
and either
MAX_PATH
or
PATH_MAX\&.
.RE
.PP
git grep \-\-all\-match \-e NODE \-e Unexpected
.RS 4
Looks for a line that has
NODE
or
Unexpected
in files that have lines that match both\&.
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite