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

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

`--`::
	Signals the end of options; the rest of the parameters
	are <path> limiters.


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

