summaryrefslogtreecommitdiff
path: root/Documentation/git-grep.txt
blob: 7545dd9a3e6c3cc16fd46e44830af4767978d2be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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] [--full-name]
	   [-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.

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

-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