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]
	   [-E | --extended-regexp] [-G | --basic-regexp] [-F | --fixed-strings]
	   [-n] [-l | --files-with-matches] [-L | --files-without-match]
	   [-c | --count]
	   [-A <post-context>] [-B <pre-context>] [-C <context>]
	   [-f <file>] [-e] <pattern> [--and|--or|--not|(|)|-e <pattern>...]
	   [<tree>...]
	   [--] [<path>...]

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.

-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.

-E | --extended-regexp | -G | --basic-regexp::
	Use POSIX extended/basic regexp for patterns.  Default
	is to use basic regexp.

-n::
	Prefix the line number to matching lines.

-l | --files-with-matches | -L | --files-without-match::
	Instead of showing every matched line, show only the
	names of files that contain (or do not contain) matches.

-c | --count::
	Instead of showing every matched line, show the number of
	lines that match.

-[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.

-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.

`<tree>...`::
	Search blobs in the trees for specified patterns.

\--::
	Signals the end of options; the rest of the parameters
	are <path> 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`.

Author
------
Originally written by Linus Torvalds <torvalds@osdl.org>, later
revamped by Junio C Hamano.


Documentation
--------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

