2 <html xmlns=
"http://www.w3.org/1999/xhtml" lang=
"en">
4 <meta charset=
"UTF-8"/>
5 <meta http-equiv=
"X-UA-Compatible" content=
"IE=edge"/>
6 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0"/>
7 <meta name=
"generator" content=
"Asciidoctor 2.0.20"/>
8 <title>git-grep(
1)
</title>
9 <link rel=
"stylesheet" href=
"https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
11 /*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
12 /* Uncomment the following line when using as a custom stylesheet */
13 /* @import
"https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
14 html{font-family:sans-serif;-webkit-text-size-adjust:
100%}
16 a:focus{outline:thin dotted}
17 a:active,a:hover{outline:
0}
18 h1{font-size:
2em;margin:
.67em
0}
19 b,strong{font-weight:bold}
21 abbr[title]{cursor:help;border-bottom:
1px dotted #dddddf;text-decoration:none}
22 dfn{font-style:italic}
24 mark{background:#ff0;color:#
000}
25 code,kbd,pre,samp{font-family:monospace;font-size:
1em}
26 pre{white-space:pre-wrap}
27 q{quotes:
"\201C" "\201D" "\2018" "\2019"}
29 sub,sup{font-size:
75%;line-height:
0;position:relative;vertical-align:baseline}
33 svg:not(:root){overflow:hidden}
35 audio,video{display:inline-block}
36 audio:not([controls]){display:none;height:
0}
37 fieldset{border:
1px solid silver;margin:
0 2px;padding:
.35em
.625em
.75em}
38 legend{border:
0;padding:
0}
39 button,input,select,textarea{font-family:inherit;font-size:
100%;margin:
0}
40 button,input{line-height:normal}
41 button,select{text-transform:none}
42 button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43 button[disabled],html input[disabled]{cursor:default}
44 input[type=checkbox],input[type=radio]{padding:
0}
45 button::-moz-focus-inner,input::-moz-focus-inner{border:
0;padding:
0}
46 textarea{overflow:auto;vertical-align:top}
47 table{border-collapse:collapse;border-spacing:
0}
48 *,::before,::after{box-sizing:border-box}
49 html,body{font-size:
100%}
50 body{background:#fff;color:rgba(
0,
0,
0,
.8);padding:
0;margin:
0;font-family:
"Noto Serif",
"DejaVu Serif",serif;line-height:
1;position:relative;cursor:auto;-moz-tab-size:
4;-o-tab-size:
4;tab-size:
4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
51 a:hover{cursor:pointer}
52 img,object,embed{max-width:
100%;height:auto}
53 object,embed{height:
100%}
54 img{-ms-interpolation-mode:bicubic}
55 .left{float:left!important}
56 .right{float:right!important}
57 .text-left{text-align:left!important}
58 .text-right{text-align:right!important}
59 .text-center{text-align:center!important}
60 .text-justify{text-align:justify!important}
62 img,object,svg{display:inline-block;vertical-align:middle}
63 textarea{height:auto;min-height:
50px}
65 .subheader,.admonitionblock td.content
>.title,.audioblock
>.title,.exampleblock
>.title,.imageblock
>.title,.listingblock
>.title,.literalblock
>.title,.stemblock
>.title,.openblock
>.title,.paragraph
>.title,.quoteblock
>.title,table.tableblock
>.title,.verseblock
>.title,.videoblock
>.title,.dlist
>.title,.olist
>.title,.ulist
>.title,.qlist
>.title,.hdlist
>.title{line-height:
1.45;color:#
7a2518;font-weight:
400;margin-top:
0;margin-bottom:
.25em}
66 div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock
>.content
>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:
0;padding:
0}
67 a{color:#
2156a5;text-decoration:underline;line-height:inherit}
68 a:hover,a:focus{color:#
1d4b8f}
70 p{line-height:
1.6;margin-bottom:
1.25em;text-rendering:optimizeLegibility}
71 p aside{font-size:
.875em;line-height:
1.35;font-style:italic}
72 h1,h2,h3,#toctitle,.sidebarblock
>.content
>.title,h4,h5,h6{font-family:
"Open Sans",
"DejaVu Sans",sans-serif;font-weight:
300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:
1em;margin-bottom:
.5em;line-height:
1.0125em}
73 h1 small,h2 small,h3 small,#toctitle small,.sidebarblock
>.content
>.title small,h4 small,h5 small,h6 small{font-size:
60%;color:#e99b8f;line-height:
0}
75 h2{font-size:
1.6875em}
76 h3,#toctitle,.sidebarblock
>.content
>.title{font-size:
1.375em}
77 h4,h5{font-size:
1.125em}
79 hr{border:solid #dddddf;border-width:
1px
0 0;clear:both;margin:
1.25em
0 1.1875em}
80 em,i{font-style:italic;line-height:inherit}
81 strong,b{font-weight:bold;line-height:inherit}
82 small{font-size:
60%;line-height:inherit}
83 code{font-family:
"Droid Sans Mono",
"DejaVu Sans Mono",monospace;font-weight:
400;color:rgba(
0,
0,
0,
.9)}
84 ul,ol,dl{line-height:
1.6;margin-bottom:
1.25em;list-style-position:outside;font-family:inherit}
85 ul,ol{margin-left:
1.5em}
86 ul li ul,ul li ol{margin-left:
1.25em;margin-bottom:
0}
87 ul.circle{list-style-type:circle}
88 ul.disc{list-style-type:disc}
89 ul.square{list-style-type:square}
90 ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91 ol li ul,ol li ol{margin-left:
1.25em;margin-bottom:
0}
92 dl dt{margin-bottom:
.3125em;font-weight:bold}
93 dl dd{margin-bottom:
1.25em}
94 blockquote{margin:
0 0 1.25em;padding:
.5625em
1.25em
0 1.1875em;border-left:
1px solid #ddd}
95 blockquote,blockquote p{line-height:
1.6;color:rgba(
0,
0,
0,
.85)}
96 @media screen and (min-width:
768px){h1,h2,h3,#toctitle,.sidebarblock
>.content
>.title,h4,h5,h6{line-height:
1.2}
98 h2{font-size:
2.3125em}
99 h3,#toctitle,.sidebarblock
>.content
>.title{font-size:
1.6875em}
100 h4{font-size:
1.4375em}}
101 table{background:#fff;margin-bottom:
1.25em;border:
1px solid #dedede;word-wrap:normal}
102 table thead,table tfoot{background:#f7f8f7}
103 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:
.5em
.625em
.625em;font-size:inherit;color:rgba(
0,
0,
0,
.8);text-align:left}
104 table tr th,table tr td{padding:
.5625em
.625em;font-size:inherit;color:rgba(
0,
0,
0,
.8)}
105 table tr.even,table tr.alt{background:#f8f8f7}
106 table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:
1.6}
107 h1,h2,h3,#toctitle,.sidebarblock
>.content
>.title,h4,h5,h6{line-height:
1.2;word-spacing:-
.05em}
108 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock
>.content
>.title strong,h4 strong,h5 strong,h6 strong{font-weight:
400}
109 .center{margin-left:auto;margin-right:auto}
111 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:
" ";display:table}
112 .clearfix::after,.float-group::after{clear:both}
113 :not(pre).nobreak{word-wrap:normal}
114 :not(pre).nowrap{white-space:nowrap}
115 :not(pre).pre-wrap{white-space:pre-wrap}
116 :not(pre):not([class^=L])
>code{font-size:
.9375em;font-style:normal!important;letter-spacing:
0;padding:
.1em
.5ex;word-spacing:-
.15em;background:#f7f7f8;border-radius:
4px;line-height:
1.45;text-rendering:optimizeSpeed}
117 pre{color:rgba(
0,
0,
0,
.9);font-family:
"Droid Sans Mono",
"DejaVu Sans Mono",monospace;line-height:
1.45;text-rendering:optimizeSpeed}
118 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119 pre
>code{display:block}
120 pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121 em em{font-style:normal}
122 strong strong{font-weight:
400}
123 .keyseq{color:rgba(
51,
51,
51,
.8)}
124 kbd{font-family:
"Droid Sans Mono",
"DejaVu Sans Mono",monospace;display:inline-block;color:rgba(
0,
0,
0,
.8);font-size:
.65em;line-height:
1.45;background:#f7f7f7;border:
1px solid #ccc;border-radius:
3px;box-shadow:
0 1px
0 rgba(
0,
0,
0,
.2),inset
0 0 0 .1em #fff;margin:
0 .15em;padding:
.2em
.5em;vertical-align:middle;position:relative;top:-
.1em;white-space:nowrap}
125 .keyseq kbd:first-child{margin-left:
0}
126 .keyseq kbd:last-child{margin-right:
0}
127 .menuseq,.menuref{color:#
000}
128 .menuseq b:not(.caret),.menuref{font-weight:inherit}
129 .menuseq{word-spacing:-
.02em}
130 .menuseq b.caret{font-size:
1.25em;line-height:
.8}
131 .menuseq i.caret{font-weight:bold;text-align:center;width:
.45em}
132 b.button::before,b.button::after{position:relative;top:-
1px;font-weight:
400}
133 b.button::before{content:
"[";padding:
0 3px
0 2px}
134 b.button::after{content:
"]";padding:
0 2px
0 3px}
135 p a
>code:hover{color:rgba(
0,
0,
0,
.9)}
136 #header,#content,#footnotes,#footer{width:
100%;margin:
0 auto;max-width:
62.5em;*zoom:
1;position:relative;padding-left:
.9375em;padding-right:
.9375em}
137 #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:
" ";display:table}
138 #header::after,#content::after,#footnotes::after,#footer::after{clear:both}
139 #content{margin-top:
1.25em}
140 #content::before{content:none}
141 #header
>h1:first-child{color:rgba(
0,
0,
0,
.85);margin-top:
2.25rem;margin-bottom:
0}
142 #header
>h1:first-child+#toc{margin-top:
8px;border-top:
1px solid #dddddf}
143 #header
>h1:only-child,body.toc2 #header
>h1:nth-last-child(
2){border-bottom:
1px solid #dddddf;padding-bottom:
8px}
144 #header .details{border-bottom:
1px solid #dddddf;line-height:
1.45;padding-top:
.25em;padding-bottom:
.25em;padding-left:
.25em;color:rgba(
0,
0,
0,
.6);display:flex;flex-flow:row wrap}
145 #header .details span:first-child{margin-left:-
.125em}
146 #header .details span.email a{color:rgba(
0,
0,
0,
.85)}
147 #header .details br{display:none}
148 #header .details br+span::before{content:
"\00a0\2013\00a0"}
149 #header .details br+span.author::before{content:
"\00a0\22c5\00a0";color:rgba(
0,
0,
0,
.85)}
150 #header .details br+span#revremark::before{content:
"\00a0|\00a0"}
151 #header #revnumber{text-transform:capitalize}
152 #header #revnumber::after{content:
"\00a0"}
153 #content
>h1:first-child:not([class]){color:rgba(
0,
0,
0,
.85);border-bottom:
1px solid #dddddf;padding-bottom:
8px;margin-top:
0;padding-top:
1rem;margin-bottom:
1.25rem}
154 #toc{border-bottom:
1px solid #e7e7e9;padding-bottom:
.5em}
155 #toc
>ul{margin-left:
.125em}
156 #toc ul.sectlevel0
>li
>a{font-style:italic}
157 #toc ul.sectlevel0 ul.sectlevel1{margin:
.5em
0}
158 #toc ul{font-family:
"Open Sans",
"DejaVu Sans",sans-serif;list-style-type:none}
159 #toc li{line-height:
1.3334;margin-top:
.3334em}
160 #toc a{text-decoration:none}
161 #toc a:active{text-decoration:underline}
162 #toctitle{color:#
7a2518;font-size:
1.2em}
163 @media screen and (min-width:
768px){#toctitle{font-size:
1.375em}
164 body.toc2{padding-left:
15em;padding-right:
0}
165 #toc.toc2{margin-top:
0!important;background:#f8f8f7;position:fixed;width:
15em;left:
0;top:
0;border-right:
1px solid #e7e7e9;border-top-width:
0!important;border-bottom-width:
0!important;z-index:
1000;padding:
1.25em
1em;height:
100%;overflow:auto}
166 #toc.toc2 #toctitle{margin-top:
0;margin-bottom:
.8rem;font-size:
1.2em}
167 #toc.toc2
>ul{font-size:
.9em;margin-bottom:
0}
168 #toc.toc2 ul ul{margin-left:
0;padding-left:
1em}
169 #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:
0;margin-top:
.5em;margin-bottom:
.5em}
170 body.toc2.toc-right{padding-left:
0;padding-right:
15em}
171 body.toc2.toc-right #toc.toc2{border-right-width:
0;border-left:
1px solid #e7e7e9;left:auto;right:
0}}
172 @media screen and (min-width:
1280px){body.toc2{padding-left:
20em;padding-right:
0}
173 #toc.toc2{width:
20em}
174 #toc.toc2 #toctitle{font-size:
1.375em}
175 #toc.toc2
>ul{font-size:
.95em}
176 #toc.toc2 ul ul{padding-left:
1.25em}
177 body.toc2.toc-right{padding-left:
0;padding-right:
20em}}
178 #content #toc{border:
1px solid #e0e0dc;margin-bottom:
1.25em;padding:
1.25em;background:#f8f8f7;border-radius:
4px}
179 #content #toc
>:first-child{margin-top:
0}
180 #content #toc
>:last-child{margin-bottom:
0}
181 #footer{max-width:none;background:rgba(
0,
0,
0,
.8);padding:
1.25em}
182 #footer-text{color:hsla(
0,
0%,
100%,
.8);line-height:
1.44}
183 #content{margin-bottom:
.625em}
184 .sect1{padding-bottom:
.625em}
185 @media screen and (min-width:
768px){#content{margin-bottom:
1.25em}
186 .sect1{padding-bottom:
1.25em}}
187 .sect1:last-child{padding-bottom:
0}
188 .sect1+.sect1{border-top:
1px solid #e7e7e9}
189 #content h1
>a.anchor,h2
>a.anchor,h3
>a.anchor,#toctitle
>a.anchor,.sidebarblock
>.content
>.title
>a.anchor,h4
>a.anchor,h5
>a.anchor,h6
>a.anchor{position:absolute;z-index:
1001;width:
1.5ex;margin-left:-
1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:
400}
190 #content h1
>a.anchor::before,h2
>a.anchor::before,h3
>a.anchor::before,#toctitle
>a.anchor::before,.sidebarblock
>.content
>.title
>a.anchor::before,h4
>a.anchor::before,h5
>a.anchor::before,h6
>a.anchor::before{content:
"\00A7";font-size:
.85em;display:block;padding-top:
.1em}
191 #content h1:hover
>a.anchor,#content h1
>a.anchor:hover,h2:hover
>a.anchor,h2
>a.anchor:hover,h3:hover
>a.anchor,#toctitle:hover
>a.anchor,.sidebarblock
>.content
>.title:hover
>a.anchor,h3
>a.anchor:hover,#toctitle
>a.anchor:hover,.sidebarblock
>.content
>.title
>a.anchor:hover,h4:hover
>a.anchor,h4
>a.anchor:hover,h5:hover
>a.anchor,h5
>a.anchor:hover,h6:hover
>a.anchor,h6
>a.anchor:hover{visibility:visible}
192 #content h1
>a.link,h2
>a.link,h3
>a.link,#toctitle
>a.link,.sidebarblock
>.content
>.title
>a.link,h4
>a.link,h5
>a.link,h6
>a.link{color:#ba3925;text-decoration:none}
193 #content h1
>a.link:hover,h2
>a.link:hover,h3
>a.link:hover,#toctitle
>a.link:hover,.sidebarblock
>.content
>.title
>a.link:hover,h4
>a.link:hover,h5
>a.link:hover,h6
>a.link:hover{color:#a53221}
194 details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:
1.25em}
195 details{margin-left:
1.25rem}
196 details
>summary{cursor:pointer;display:block;position:relative;line-height:
1.6;margin-bottom:
.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197 details
>summary::-webkit-details-marker{display:none}
198 details
>summary::before{content:
"";border:solid transparent;border-left:solid;border-width:
.3em
0 .3em
.5em;position:absolute;top:
.5em;left:-
1.25rem;transform:translateX(
15%)}
199 details[open]
>summary::before{border:solid transparent;border-top:solid;border-width:
.5em
.3em
0;transform:translateY(
15%)}
200 details
>summary::after{content:
"";width:
1.25rem;height:
1em;position:absolute;top:
.3em;left:-
1.25rem}
201 .admonitionblock td.content
>.title,.audioblock
>.title,.exampleblock
>.title,.imageblock
>.title,.listingblock
>.title,.literalblock
>.title,.stemblock
>.title,.openblock
>.title,.paragraph
>.title,.quoteblock
>.title,table.tableblock
>.title,.verseblock
>.title,.videoblock
>.title,.dlist
>.title,.olist
>.title,.ulist
>.title,.qlist
>.title,.hdlist
>.title{text-rendering:optimizeLegibility;text-align:left;font-family:
"Noto Serif",
"DejaVu Serif",serif;font-size:
1rem;font-style:italic}
202 table.tableblock.fit-content
>caption.title{white-space:nowrap;width:
0}
203 .paragraph.lead
>p,#preamble
>.sectionbody
>[class=paragraph]:first-of-type p{font-size:
1.21875em;line-height:
1.6;color:rgba(
0,
0,
0,
.85)}
204 .admonitionblock
>table{border-collapse:separate;border:
0;background:none;width:
100%}
205 .admonitionblock
>table td.icon{text-align:center;width:
80px}
206 .admonitionblock
>table td.icon img{max-width:none}
207 .admonitionblock
>table td.icon .title{font-weight:bold;font-family:
"Open Sans",
"DejaVu Sans",sans-serif;text-transform:uppercase}
208 .admonitionblock
>table td.content{padding-left:
1.125em;padding-right:
1.25em;border-left:
1px solid #dddddf;color:rgba(
0,
0,
0,
.6);word-wrap:anywhere}
209 .admonitionblock
>table td.content
>:last-child
>:last-child{margin-bottom:
0}
210 .exampleblock
>.content{border:
1px solid #e6e6e6;margin-bottom:
1.25em;padding:
1.25em;background:#fff;border-radius:
4px}
211 .sidebarblock{border:
1px solid #dbdbd6;margin-bottom:
1.25em;padding:
1.25em;background:#f3f3f2;border-radius:
4px}
212 .sidebarblock
>.content
>.title{color:#
7a2518;margin-top:
0;text-align:center}
213 .exampleblock
>.content
>:first-child,.sidebarblock
>.content
>:first-child{margin-top:
0}
214 .exampleblock
>.content
>:last-child,.exampleblock
>.content
>:last-child
>:last-child,.exampleblock
>.content .olist
>ol
>li:last-child
>:last-child,.exampleblock
>.content .ulist
>ul
>li:last-child
>:last-child,.exampleblock
>.content .qlist
>ol
>li:last-child
>:last-child,.sidebarblock
>.content
>:last-child,.sidebarblock
>.content
>:last-child
>:last-child,.sidebarblock
>.content .olist
>ol
>li:last-child
>:last-child,.sidebarblock
>.content .ulist
>ul
>li:last-child
>:last-child,.sidebarblock
>.content .qlist
>ol
>li:last-child
>:last-child{margin-bottom:
0}
215 .literalblock pre,.listingblock
>.content
>pre{border-radius:
4px;overflow-x:auto;padding:
1em;font-size:
.8125em}
216 @media screen and (min-width:
768px){.literalblock pre,.listingblock
>.content
>pre{font-size:
.90625em}}
217 @media screen and (min-width:
1280px){.literalblock pre,.listingblock
>.content
>pre{font-size:
1em}}
218 .literalblock pre,.listingblock
>.content
>pre:not(.highlight),.listingblock
>.content
>pre[class=highlight],.listingblock
>.content
>pre[class^=
"highlight "]{background:#f7f7f8}
219 .literalblock.output pre{color:#f7f7f8;background:rgba(
0,
0,
0,
.9)}
220 .listingblock
>.content{position:relative}
221 .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:
.75em;top:
.425rem;right:
.5rem;line-height:
1;text-transform:uppercase;color:inherit;opacity:
.5}
222 .listingblock:hover code[data-lang]::before{display:block}
223 .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:
.5em;color:inherit;opacity:
.5}
224 .listingblock.terminal pre .command:not([data-prompt])::before{content:
"$"}
225 .listingblock pre.highlightjs{padding:
0}
226 .listingblock pre.highlightjs
>code{padding:
1em;border-radius:
4px}
227 .listingblock pre.prettyprint{border-width:
0}
228 .prettyprint{background:#f7f7f8}
229 pre.prettyprint .linenums{line-height:
1.45;margin-left:
2em}
230 pre.prettyprint li{background:none;list-style-type:inherit;padding-left:
0}
231 pre.prettyprint li code[data-lang]::before{opacity:
1}
232 pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
233 table.linenotable{border-collapse:separate;border:
0;margin-bottom:
0;background:none}
234 table.linenotable td[class]{color:inherit;vertical-align:top;padding:
0;line-height:inherit;white-space:normal}
235 table.linenotable td.code{padding-left:
.75em}
236 table.linenotable td.linenos,pre.pygments .linenos{border-right:
1px solid;opacity:
.35;padding-right:
.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
237 pre.pygments span.linenos{display:inline-block;margin-right:
.75em}
238 .quoteblock{margin:
0 1em
1.25em
1.5em;display:table}
239 .quoteblock:not(.excerpt)
>.title{margin-left:-
1.5em;margin-bottom:
.75em}
240 .quoteblock blockquote,.quoteblock p{color:rgba(
0,
0,
0,
.85);font-size:
1.15rem;line-height:
1.75;word-spacing:
.1em;letter-spacing:
0;font-style:italic;text-align:justify}
241 .quoteblock blockquote{margin:
0;padding:
0;border:
0}
242 .quoteblock blockquote::before{content:
"\201c";float:left;font-size:
2.75em;font-weight:bold;line-height:
.6em;margin-left:-
.6em;color:#
7a2518;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.1)}
243 .quoteblock blockquote
>.paragraph:last-child p{margin-bottom:
0}
244 .quoteblock .attribution{margin-top:
.75em;margin-right:
.5ex;text-align:right}
245 .verseblock{margin:
0 1em
1.25em}
246 .verseblock pre{font-family:
"Open Sans",
"DejaVu Sans",sans-serif;font-size:
1.15rem;color:rgba(
0,
0,
0,
.85);font-weight:
300;text-rendering:optimizeLegibility}
247 .verseblock pre strong{font-weight:
400}
248 .verseblock .attribution{margin-top:
1.25rem;margin-left:
.5ex}
249 .quoteblock .attribution,.verseblock .attribution{font-size:
.9375em;line-height:
1.45;font-style:italic}
250 .quoteblock .attribution br,.verseblock .attribution br{display:none}
251 .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-
.025em;color:rgba(
0,
0,
0,
.6)}
252 .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
253 .quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:
1.6;word-spacing:
0}
254 .quoteblock.abstract{margin:
0 1em
1.25em;display:block}
255 .quoteblock.abstract
>.title{margin:
0 0 .375em;font-size:
1.15em;text-align:center}
256 .quoteblock.excerpt
>blockquote,.quoteblock .quoteblock{padding:
0 0 .25em
1em;border-left:
.25em solid #dddddf}
257 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:
0}
258 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:
1.0625rem}
259 .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:
.85rem;text-align:left;margin-right:
0}
260 p.tableblock:last-child{margin-bottom:
0}
261 td.tableblock
>.content{margin-bottom:
1.25em;word-wrap:anywhere}
262 td.tableblock
>.content
>:last-child{margin-bottom:-
1.25em}
263 table.tableblock,th.tableblock,td.tableblock{border:
0 solid #dedede}
264 table.grid-all
>*
>tr
>*{border-width:
1px}
265 table.grid-cols
>*
>tr
>*{border-width:
0 1px}
266 table.grid-rows
>*
>tr
>*{border-width:
1px
0}
267 table.frame-all{border-width:
1px}
268 table.frame-ends{border-width:
1px
0}
269 table.frame-sides{border-width:
0 1px}
270 table.frame-none
>colgroup+*
>:first-child
>*,table.frame-sides
>colgroup+*
>:first-child
>*{border-top-width:
0}
271 table.frame-none
>:last-child
>:last-child
>*,table.frame-sides
>:last-child
>:last-child
>*{border-bottom-width:
0}
272 table.frame-none
>*
>tr
>:first-child,table.frame-ends
>*
>tr
>:first-child{border-left-width:
0}
273 table.frame-none
>*
>tr
>:last-child,table.frame-ends
>*
>tr
>:last-child{border-right-width:
0}
274 table.stripes-all
>*
>tr,table.stripes-odd
>*
>tr:nth-of-type(odd),table.stripes-even
>*
>tr:nth-of-type(even),table.stripes-hover
>*
>tr:hover{background:#f8f8f7}
275 th.halign-left,td.halign-left{text-align:left}
276 th.halign-right,td.halign-right{text-align:right}
277 th.halign-center,td.halign-center{text-align:center}
278 th.valign-top,td.valign-top{vertical-align:top}
279 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
280 th.valign-middle,td.valign-middle{vertical-align:middle}
281 table thead th,table tfoot th{font-weight:bold}
282 tbody tr th{background:#f7f8f7}
283 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(
0,
0,
0,
.8);font-weight:bold}
284 p.tableblock
>code:only-child{background:none;padding:
0}
285 p.tableblock{font-size:
1em}
286 ol{margin-left:
1.75em}
287 ul li ol{margin-left:
1.5em}
288 dl dd{margin-left:
1.125em}
289 dl dd:last-child,dl dd:last-child
>:last-child{margin-bottom:
0}
290 li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:
.625em}
291 ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292 ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:
.625em}
293 ul.unstyled,ol.unstyled{margin-left:
0}
294 li
>p:empty:only-child::before{content:
"";display:inline-block}
295 ul.checklist
>li
>p:first-child{margin-left:-
1em}
296 ul.checklist
>li
>p:first-child
>.fa-square-o:first-child,ul.checklist
>li
>p:first-child
>.fa-check-square-o:first-child{width:
1.25em;font-size:
.8em;position:relative;bottom:
.125em}
297 ul.checklist
>li
>p:first-child
>input[type=checkbox]:first-child{margin-right:
.25em}
298 ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:
0 0 .625em -
1.25em}
299 ul.inline
>li{margin-left:
1.25em}
300 .unstyled dl dt{font-weight:
400;font-style:normal}
301 ol.arabic{list-style-type:decimal}
302 ol.decimal{list-style-type:decimal-leading-zero}
303 ol.loweralpha{list-style-type:lower-alpha}
304 ol.upperalpha{list-style-type:upper-alpha}
305 ol.lowerroman{list-style-type:lower-roman}
306 ol.upperroman{list-style-type:upper-roman}
307 ol.lowergreek{list-style-type:lower-greek}
308 .hdlist
>table,.colist
>table{border:
0;background:none}
309 .hdlist
>table
>tbody
>tr,.colist
>table
>tbody
>tr{background:none}
310 td.hdlist1,td.hdlist2{vertical-align:top;padding:
0 .625em}
311 td.hdlist1{font-weight:bold;padding-bottom:
1.25em}
312 td.hdlist2{word-wrap:anywhere}
313 .literalblock+.colist,.listingblock+.colist{margin-top:-
.5em}
314 .colist td:not([class]):first-child{padding:
.4em
.75em
0;line-height:
1;vertical-align:top}
315 .colist td:not([class]):first-child img{max-width:none}
316 .colist td:not([class]):last-child{padding:
.25em
0}
317 .thumb,.th{line-height:
0;display:inline-block;border:
4px solid #fff;box-shadow:
0 0 0 1px #ddd}
318 .imageblock.left{margin:
.25em
.625em
1.25em
0}
319 .imageblock.right{margin:
.25em
0 1.25em
.625em}
320 .imageblock
>.title{margin-bottom:
0}
321 .imageblock.thumb,.imageblock.th{border-width:
6px}
322 .imageblock.thumb
>.title,.imageblock.th
>.title{padding:
0 .125em}
323 .image.left,.image.right{margin-top:
.25em;margin-bottom:
.25em;display:inline-block;line-height:
0}
324 .image.left{margin-right:
.625em}
325 .image.right{margin-left:
.625em}
326 a.image{text-decoration:none;display:inline-block}
327 a.image object{pointer-events:none}
328 sup.footnote,sup.footnoteref{font-size:
.875em;position:static;vertical-align:super}
329 sup.footnote a,sup.footnoteref a{text-decoration:none}
330 sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
331 #footnotes{padding-top:
.75em;padding-bottom:
.75em;margin-bottom:
.625em}
332 #footnotes hr{width:
20%;min-width:
6.25em;margin:-
.25em
0 .75em;border-width:
1px
0 0}
333 #footnotes .footnote{padding:
0 .375em
0 .225em;line-height:
1.3334;font-size:
.875em;margin-left:
1.2em;margin-bottom:
.2em}
334 #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-
1.05em}
335 #footnotes .footnote:last-of-type{margin-bottom:
0}
336 #content #footnotes{margin-top:-
.625em;margin-bottom:
0;padding:
.75em
0}
337 div.unbreakable{page-break-inside:avoid}
338 .big{font-size:larger}
339 .small{font-size:smaller}
340 .underline{text-decoration:underline}
341 .overline{text-decoration:overline}
342 .line-through{text-decoration:line-through}
344 .aqua-background{background:#
00fafa}
346 .black-background{background:#
000}
348 .blue-background{background:#
0000fa}
349 .fuchsia{color:#bf00bf}
350 .fuchsia-background{background:#fa00fa}
352 .gray-background{background:#
7d7d7d}
353 .green{color:#
006000}
354 .green-background{background:#
007d00}
356 .lime-background{background:#
00fa00}
357 .maroon{color:#
600000}
358 .maroon-background{background:#
7d0000}
360 .navy-background{background:#
00007d}
361 .olive{color:#
606000}
362 .olive-background{background:#
7d7d00}
363 .purple{color:#
600060}
364 .purple-background{background:#
7d007d}
366 .red-background{background:#fa0000}
367 .silver{color:#
909090}
368 .silver-background{background:#bcbcbc}
370 .teal-background{background:#
007d7d}
371 .white{color:#bfbfbf}
372 .white-background{background:#fafafa}
373 .yellow{color:#bfbf00}
374 .yellow-background{background:#fafa00}
375 span.icon
>.fa{cursor:default}
376 a span.icon
>.fa{cursor:inherit}
377 .admonitionblock td.icon [class^=
"fa icon-"]{font-size:
2.5em;text-shadow:
1px
1px
2px rgba(
0,
0,
0,
.5);cursor:default}
378 .admonitionblock td.icon .icon-note::before{content:
"\f05a";color:#
19407c}
379 .admonitionblock td.icon .icon-tip::before{content:
"\f0eb";text-shadow:
1px
1px
2px rgba(
155,
155,
0,
.8);color:#
111}
380 .admonitionblock td.icon .icon-warning::before{content:
"\f071";color:#bf6900}
381 .admonitionblock td.icon .icon-caution::before{content:
"\f06d";color:#bf3400}
382 .admonitionblock td.icon .icon-important::before{content:
"\f06a";color:#bf0000}
383 .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(
0,
0,
0,
.8);border-radius:
50%;text-align:center;font-size:
.75em;width:
1.67em;height:
1.67em;line-height:
1.67em;font-family:
"Open Sans",
"DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
384 .conum[data-value] *{color:#fff!important}
385 .conum[data-value]+b{display:none}
386 .conum[data-value]::after{content:attr(data-value)}
387 pre .conum[data-value]{position:relative;top:-
.125em}
388 b.conum *{color:inherit!important}
389 .conum:not([data-value]):empty{display:none}
390 dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391 h1,h2,p,td.content,span.alt,summary{letter-spacing:-
.01em}
392 p strong,td.content strong,div.footnote strong{letter-spacing:-
.005em}
393 p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:
1.0625rem}
394 p{margin-bottom:
1.25rem}
395 .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:
1em}
396 .exampleblock
>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:
0 1px
4px #e0e0dc}
397 .print-only{display:none!important}
398 @page{margin:
1.25cm
.75cm}
399 @media print{*{box-shadow:none!important;text-shadow:none!important}
401 a{color:inherit!important;text-decoration:underline!important}
402 a.bare,a[href^=
"#"],a[href^=
"mailto:"]{text-decoration:none!important}
403 a[href^=
"http:"]:not(.bare)::after,a[href^=
"https:"]:not(.bare)::after{content:
"(" attr(href)
")";display:inline-block;font-size:
.875em;padding-left:
.25em}
404 abbr[title]{border-bottom:
1px dotted}
405 abbr[title]::after{content:
" (" attr(title)
")"}
406 pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
407 thead{display:table-header-group}
409 p,blockquote,dt,td.content{font-size:
1em;orphans:
3;widows:
3}
410 h2,h3,#toctitle,.sidebarblock
>.content
>.title{page-break-after:avoid}
411 #header,#content,#footnotes,#footer{max-width:none}
412 #toc,.sidebarblock,.exampleblock
>.content{background:none!important}
413 #toc{border-bottom:
1px solid #dddddf!important;padding-bottom:
0!important}
414 body.book #header{text-align:center}
415 body.book #header
>h1:first-child{border:
0!important;margin:
2.5em
0 1em}
416 body.book #header .details{border:
0!important;display:block;padding:
0!important}
417 body.book #header .details span:first-child{margin-left:
0!important}
418 body.book #header .details br{display:block}
419 body.book #header .details br+span::before{content:none!important}
420 body.book #toc{border:
0!important;text-align:left!important;padding:
0!important;margin:
0!important}
421 body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1
>h2{page-break-before:always}
422 .listingblock code[data-lang]::before{display:block}
423 #footer{padding:
0 .9375em}
424 .hide-on-print{display:none!important}
425 .print-only{display:block!important}
426 .hide-for-print{display:none!important}
427 .show-for-print{display:inherit!important}}
428 @media amzn-kf8,print{#header
>h1:first-child{margin-top:
1.25rem}
429 .sect1{padding:
0!important}
430 .sect1+.sect1{border:
0}
431 #footer{background:none}
432 #footer-text{color:rgba(
0,
0,
0,
.6);font-size:
.9em}}
433 @media amzn-kf8{#header,#content,#footnotes,#footer{padding:
0}}
441 <body class=
"manpage">
443 <h1>git-grep(
1) Manual Page
</h1>
444 <h2 id=
"_name">NAME
</h2>
445 <div class=
"sectionbody">
446 <p>git-grep - Print lines matching a pattern
</p>
451 <h2 id=
"_synopsis">SYNOPSIS
</h2>
452 <div class=
"sectionbody">
453 <div class=
"verseblock">
454 <pre class=
"content"><em>git grep
</em> [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp]
455 [-v | --invert-match] [-h|-H] [--full-name]
456 [-E | --extended-regexp] [-G | --basic-regexp]
458 [-F | --fixed-strings] [-n | --line-number] [--column]
459 [-l | --files-with-matches] [-L | --files-without-match]
460 [(-O | --open-files-in-pager) [
<pager
>]]
462 [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet]
463 [--max-depth
<depth
>] [--[no-]recursive]
464 [--color[=
<when
>] | --no-color]
465 [--break] [--heading] [-p | --show-function]
466 [-A
<post-context
>] [-B
<pre-context
>] [-C
<context
>]
467 [-W | --function-context]
468 [(-m | --max-count)
<num
>]
469 [--threads
<num
>]
470 [-f
<file
>] [-e]
<pattern
>
471 [--and|--or|--not|(|)|-e
<pattern
>…​]
472 [--recurse-submodules] [--parent-basename
<basename
>]
473 [ [--[no-]exclude-standard] [--cached | --untracked | --no-index] |
<tree
>…​]
474 [--] [
<pathspec
>…​]
</pre>
479 <h2 id=
"_description">DESCRIPTION
</h2>
480 <div class=
"sectionbody">
481 <div class=
"paragraph">
482 <p>Look for specified patterns in the tracked files in the work tree, blobs
483 registered in the index file, or blobs in given tree objects. Patterns
484 are lists of one or more search expressions separated by newline
485 characters. An empty string as search expression matches all lines.
</p>
490 <h2 id=
"_options">OPTIONS
</h2>
491 <div class=
"sectionbody">
494 <dt class=
"hdlist1">--cached
</dt>
496 <p>Instead of searching tracked files in the working tree, search
497 blobs registered in the index file.
</p>
499 <dt class=
"hdlist1">--untracked
</dt>
501 <p>In addition to searching in the tracked files in the working
502 tree, search also in untracked files.
</p>
504 <dt class=
"hdlist1">--no-index
</dt>
506 <p>Search files in the current directory that is not managed by Git,
507 or by ignoring that the current directory is managed by Git. This
508 is rather similar to running the regular
<code>grep(
1)
</code> utility with its
509 <code>-r
</code> option specified, but with some additional benefits, such as
510 using pathspec patterns to limit paths; see the
<em>pathspec
</em> entry
511 in
<a href=
"gitglossary.html">gitglossary(
7)
</a> for more information.
</p>
512 <div class=
"paragraph">
513 <p>This option cannot be used together with
<code>--cached
</code> or
<code>--untracked
</code>.
514 See also
<code>grep.fallbackToNoIndex
</code> in
<em>CONFIGURATION
</em> below.
</p>
517 <dt class=
"hdlist1">--no-exclude-standard
</dt>
519 <p>Also search in ignored files by not honoring the
<code>.gitignore
</code>
520 mechanism. Only useful with
<code>--untracked
</code>.
</p>
522 <dt class=
"hdlist1">--exclude-standard
</dt>
524 <p>Do not pay attention to ignored files specified via the
<code>.gitignore
</code>
525 mechanism. Only useful when searching files in the current directory
526 with
<code>--no-index
</code>.
</p>
528 <dt class=
"hdlist1">--recurse-submodules
</dt>
530 <p>Recursively search in each submodule that is active and
531 checked out in the repository. When used in combination with the
532 <em><tree
></em> option the prefix of all submodule output will be the name of
533 the parent project
’s
<em><tree
></em> object. This option cannot be used together
534 with
<code>--untracked
</code>, and it has no effect if
<code>--no-index
</code> is specified.
</p>
536 <dt class=
"hdlist1">-a
</dt>
537 <dt class=
"hdlist1">--text
</dt>
539 <p>Process binary files as if they were text.
</p>
541 <dt class=
"hdlist1">--textconv
</dt>
543 <p>Honor textconv filter settings.
</p>
545 <dt class=
"hdlist1">--no-textconv
</dt>
547 <p>Do not honor textconv filter settings.
548 This is the default.
</p>
550 <dt class=
"hdlist1">-i
</dt>
551 <dt class=
"hdlist1">--ignore-case
</dt>
553 <p>Ignore case differences between the patterns and the
556 <dt class=
"hdlist1">-I
</dt>
558 <p>Don
’t match the pattern in binary files.
</p>
560 <dt class=
"hdlist1">--max-depth
<depth
></dt>
562 <p>For each
<pathspec
> given on command line, descend at most
<depth
>
563 levels of directories. A value of -
1 means no limit.
564 This option is ignored if
<pathspec
> contains active wildcards.
565 In other words if
"a*" matches a directory named
"a*",
566 "*" is matched literally so --max-depth is still effective.
</p>
568 <dt class=
"hdlist1">-r
</dt>
569 <dt class=
"hdlist1">--recursive
</dt>
571 <p>Same as
<code>--max-depth=-
1</code>; this is the default.
</p>
573 <dt class=
"hdlist1">--no-recursive
</dt>
575 <p>Same as
<code>--max-depth=
0</code>.
</p>
577 <dt class=
"hdlist1">-w
</dt>
578 <dt class=
"hdlist1">--word-regexp
</dt>
580 <p>Match the pattern only at word boundary (either begin at the
581 beginning of a line, or preceded by a non-word character; end at
582 the end of a line or followed by a non-word character).
</p>
584 <dt class=
"hdlist1">-v
</dt>
585 <dt class=
"hdlist1">--invert-match
</dt>
587 <p>Select non-matching lines.
</p>
589 <dt class=
"hdlist1">-h
</dt>
590 <dt class=
"hdlist1">-H
</dt>
592 <p>By default, the command shows the filename for each
593 match.
<code>-h
</code> option is used to suppress this output.
594 <code>-H
</code> is there for completeness and does not do anything
595 except it overrides
<code>-h
</code> given earlier on the command
598 <dt class=
"hdlist1">--full-name
</dt>
600 <p>When run from a subdirectory, the command usually
601 outputs paths relative to the current directory. This
602 option forces paths to be output relative to the project
605 <dt class=
"hdlist1">-E
</dt>
606 <dt class=
"hdlist1">--extended-regexp
</dt>
607 <dt class=
"hdlist1">-G
</dt>
608 <dt class=
"hdlist1">--basic-regexp
</dt>
610 <p>Use POSIX extended/basic regexp for patterns. Default
611 is to use basic regexp.
</p>
613 <dt class=
"hdlist1">-P
</dt>
614 <dt class=
"hdlist1">--perl-regexp
</dt>
616 <p>Use Perl-compatible regular expressions for patterns.
</p>
617 <div class=
"paragraph">
618 <p>Support for these types of regular expressions is an optional
619 compile-time dependency. If Git wasn
’t compiled with support for them
620 providing this option will cause it to die.
</p>
623 <dt class=
"hdlist1">-F
</dt>
624 <dt class=
"hdlist1">--fixed-strings
</dt>
626 <p>Use fixed strings for patterns (don
’t interpret pattern
629 <dt class=
"hdlist1">-n
</dt>
630 <dt class=
"hdlist1">--line-number
</dt>
632 <p>Prefix the line number to matching lines.
</p>
634 <dt class=
"hdlist1">--column
</dt>
636 <p>Prefix the
1-indexed byte-offset of the first match from the start of the
639 <dt class=
"hdlist1">-l
</dt>
640 <dt class=
"hdlist1">--files-with-matches
</dt>
641 <dt class=
"hdlist1">--name-only
</dt>
642 <dt class=
"hdlist1">-L
</dt>
643 <dt class=
"hdlist1">--files-without-match
</dt>
645 <p>Instead of showing every matched line, show only the
646 names of files that contain (or do not contain) matches.
647 For better compatibility with
<em>git diff
</em>,
<code>--name-only
</code> is a
648 synonym for
<code>--files-with-matches
</code>.
</p>
650 <dt class=
"hdlist1">-O[
<pager
>]
</dt>
651 <dt class=
"hdlist1">--open-files-in-pager[=
<pager
>]
</dt>
653 <p>Open the matching files in the pager (not the output of
<em>grep
</em>).
654 If the pager happens to be
"less" or
"vi", and the user
655 specified only one pattern, the first file is positioned at
656 the first match automatically. The
<code>pager
</code> argument is
657 optional; if specified, it must be stuck to the option
658 without a space. If
<code>pager
</code> is unspecified, the default pager
659 will be used (see
<code>core.pager
</code> in
<a href=
"git-config.html">git-config(
1)
</a>).
</p>
661 <dt class=
"hdlist1">-z
</dt>
662 <dt class=
"hdlist1">--null
</dt>
664 <p>Use \
0 as the delimiter for pathnames in the output, and print
665 them verbatim. Without this option, pathnames with
"unusual"
666 characters are quoted as explained for the configuration
667 variable
<code>core.quotePath
</code> (see
<a href=
"git-config.html">git-config(
1)
</a>).
</p>
669 <dt class=
"hdlist1">-o
</dt>
670 <dt class=
"hdlist1">--only-matching
</dt>
672 <p>Print only the matched (non-empty) parts of a matching line, with each such
673 part on a separate output line.
</p>
675 <dt class=
"hdlist1">-c
</dt>
676 <dt class=
"hdlist1">--count
</dt>
678 <p>Instead of showing every matched line, show the number of
679 lines that match.
</p>
681 <dt class=
"hdlist1">--color[=
<when
>]
</dt>
683 <p>Show colored matches.
684 The value must be always (the default), never, or auto.
</p>
686 <dt class=
"hdlist1">--no-color
</dt>
688 <p>Turn off match highlighting, even when the configuration file
689 gives the default to color output.
690 Same as
<code>--color=never
</code>.
</p>
692 <dt class=
"hdlist1">--break
</dt>
694 <p>Print an empty line between matches from different files.
</p>
696 <dt class=
"hdlist1">--heading
</dt>
698 <p>Show the filename above the matches in that file instead of
699 at the start of each shown line.
</p>
701 <dt class=
"hdlist1">-p
</dt>
702 <dt class=
"hdlist1">--show-function
</dt>
704 <p>Show the preceding line that contains the function name of
705 the match, unless the matching line is a function name itself.
706 The name is determined in the same way as
<code>git diff
</code> works out
707 patch hunk headers (see
<em>Defining a custom hunk-header
</em> in
708 <a href=
"gitattributes.html">gitattributes(
5)
</a>).
</p>
710 <dt class=
"hdlist1">-
<num
></dt>
711 <dt class=
"hdlist1">-C
<num
></dt>
712 <dt class=
"hdlist1">--context
<num
></dt>
714 <p>Show
<num
> leading and trailing lines, and place a line
715 containing
<code>--
</code> between contiguous groups of matches.
</p>
717 <dt class=
"hdlist1">-A
<num
></dt>
718 <dt class=
"hdlist1">--after-context
<num
></dt>
720 <p>Show
<num
> trailing lines, and place a line containing
721 <code>--
</code> between contiguous groups of matches.
</p>
723 <dt class=
"hdlist1">-B
<num
></dt>
724 <dt class=
"hdlist1">--before-context
<num
></dt>
726 <p>Show
<num
> leading lines, and place a line containing
727 <code>--
</code> between contiguous groups of matches.
</p>
729 <dt class=
"hdlist1">-W
</dt>
730 <dt class=
"hdlist1">--function-context
</dt>
732 <p>Show the surrounding text from the previous line containing a
733 function name up to the one before the next function name,
734 effectively showing the whole function in which the match was
735 found. The function names are determined in the same way as
736 <code>git diff
</code> works out patch hunk headers (see
<em>Defining a
737 custom hunk-header
</em> in
<a href=
"gitattributes.html">gitattributes(
5)
</a>).
</p>
739 <dt class=
"hdlist1">-m
<num
></dt>
740 <dt class=
"hdlist1">--max-count
<num
></dt>
742 <p>Limit the amount of matches per file. When using the
<code>-v
</code> or
743 <code>--invert-match
</code> option, the search stops after the specified
744 number of non-matches. A value of -
1 will return unlimited
745 results (the default). A value of
0 will exit immediately with
746 a non-zero status.
</p>
748 <dt class=
"hdlist1">--threads
<num
></dt>
750 <p>Number of
<code>grep
</code> worker threads to use. See
<em>NOTES ON THREADS
</em>
751 and
<code>grep.threads
</code> in
<em>CONFIGURATION
</em> for more information.
</p>
753 <dt class=
"hdlist1">-f
<file
></dt>
755 <p>Read patterns from
<file
>, one per line.
</p>
756 <div class=
"paragraph">
757 <p>Passing the pattern via
<file
> allows for providing a search pattern
760 <div class=
"paragraph">
761 <p>Not all pattern types support patterns containing \
0. Git will error
762 out if a given pattern type can
’t support such a pattern. The
763 <code>--perl-regexp
</code> pattern type when compiled against the PCRE v2 backend
764 has the widest support for these types of patterns.
</p>
766 <div class=
"paragraph">
767 <p>In versions of Git before
2.23.0 patterns containing \
0 would be
768 silently considered fixed. This was never documented, there were also
769 odd and undocumented interactions between e.g. non-ASCII patterns
770 containing \
0 and
<code>--ignore-case
</code>.
</p>
772 <div class=
"paragraph">
773 <p>In future versions we may learn to support patterns containing \
0 for
774 more search backends, until then we
’ll die when the pattern type in
775 question doesn
’t support them.
</p>
778 <dt class=
"hdlist1">-e
</dt>
780 <p>The next parameter is the pattern. This option has to be
781 used for patterns starting with
<code>-
</code> and should be used in
782 scripts passing user input to grep. Multiple patterns are
783 combined by
<em>or
</em>.
</p>
785 <dt class=
"hdlist1">--and
</dt>
786 <dt class=
"hdlist1">--or
</dt>
787 <dt class=
"hdlist1">--not
</dt>
788 <dt class=
"hdlist1">(
…​ )
</dt>
790 <p>Specify how multiple patterns are combined using Boolean
791 expressions.
<code>--or
</code> is the default operator.
<code>--and
</code> has
792 higher precedence than
<code>--or
</code>.
<code>-e
</code> has to be used for all
795 <dt class=
"hdlist1">--all-match
</dt>
797 <p>When giving multiple pattern expressions combined with
<code>--or
</code>,
798 this flag is specified to limit the match to files that
799 have lines to match all of them.
</p>
801 <dt class=
"hdlist1">-q
</dt>
802 <dt class=
"hdlist1">--quiet
</dt>
804 <p>Do not output matched lines; instead, exit with status
0 when
805 there is a match and with non-zero status when there isn
’t.
</p>
807 <dt class=
"hdlist1"><tree
>…​</dt>
809 <p>Instead of searching tracked files in the working tree, search
810 blobs in the given trees.
</p>
812 <dt class=
"hdlist1">--
</dt>
814 <p>Signals the end of options; the rest of the parameters
815 are
<pathspec
> limiters.
</p>
817 <dt class=
"hdlist1"><pathspec
>…​</dt>
819 <p>If given, limit the search to paths matching at least one pattern.
820 Both leading paths match and glob(
7) patterns are supported.
</p>
821 <div class=
"paragraph">
822 <p>For more details about the
<pathspec
> syntax, see the
<em>pathspec
</em> entry
823 in
<a href=
"gitglossary.html">gitglossary(
7)
</a>.
</p>
831 <h2 id=
"_examples">EXAMPLES
</h2>
832 <div class=
"sectionbody">
835 <dt class=
"hdlist1"><code>git grep 'time_t' -- '*.[ch]'
</code></dt>
837 <p>Looks for
<code>time_t
</code> in all tracked .c and .h files in the working
838 directory and its subdirectories.
</p>
840 <dt class=
"hdlist1"><code>git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)
</code></dt>
842 <p>Looks for a line that has
<code>#define
</code> and either
<code>MAX_PATH
</code> or
843 <code>PATH_MAX
</code>.
</p>
845 <dt class=
"hdlist1"><code>git grep --all-match -e NODE -e Unexpected
</code></dt>
847 <p>Looks for a line that has
<code>NODE
</code> or
<code>Unexpected
</code> in
848 files that have lines that match both.
</p>
850 <dt class=
"hdlist1"><code>git grep solution -- :^Documentation
</code></dt>
852 <p>Looks for
<code>solution
</code>, excluding files in
<code>Documentation
</code>.
</p>
859 <h2 id=
"_notes_on_threads">NOTES ON THREADS
</h2>
860 <div class=
"sectionbody">
861 <div class=
"paragraph">
862 <p>The
<code>--threads
</code> option (and the
<code>grep.threads
</code> configuration) will be ignored when
863 <code>--open-files-in-pager
</code> is used, forcing a single-threaded execution.
</p>
865 <div class=
"paragraph">
866 <p>When grepping the object store (with
<code>--cached
</code> or giving tree objects), running
867 with multiple threads might perform slower than single-threaded if
<code>--textconv
</code>
868 is given and there are too many text conversions. Thus, if low performance is
869 experienced in this case, it might be desirable to use
<code>--threads=
1</code>.
</p>
874 <h2 id=
"_configuration">CONFIGURATION
</h2>
875 <div class=
"sectionbody">
876 <div class=
"paragraph">
877 <p>Everything below this line in this section is selectively included
878 from the
<a href=
"git-config.html">git-config(
1)
</a> documentation. The content is the same
879 as what
’s found there:
</p>
883 <dt class=
"hdlist1">grep.lineNumber
</dt>
885 <p>If set to true, enable
<code>-n
</code> option by default.
</p>
887 <dt class=
"hdlist1">grep.column
</dt>
889 <p>If set to true, enable the
<code>--column
</code> option by default.
</p>
891 <dt class=
"hdlist1">grep.patternType
</dt>
893 <p>Set the default matching behavior. Using a value of
<em>basic
</em>,
<em>extended
</em>,
894 <em>fixed
</em>, or
<em>perl
</em> will enable the
<code>--basic-regexp
</code>,
<code>--extended-regexp
</code>,
895 <code>--fixed-strings
</code>, or
<code>--perl-regexp
</code> option accordingly, while the
896 value
<em>default
</em> will use the
<code>grep.extendedRegexp
</code> option to choose
897 between
<em>basic
</em> and
<em>extended
</em>.
</p>
899 <dt class=
"hdlist1">grep.extendedRegexp
</dt>
901 <p>If set to true, enable
<code>--extended-regexp
</code> option by default. This
902 option is ignored when the
<code>grep.patternType
</code> option is set to a value
903 other than
<em>default
</em>.
</p>
905 <dt class=
"hdlist1">grep.threads
</dt>
907 <p>Number of grep worker threads to use. If unset (or set to
0), Git will
908 use as many threads as the number of logical cores available.
</p>
910 <dt class=
"hdlist1">grep.fullName
</dt>
912 <p>If set to true, enable
<code>--full-name
</code> option by default.
</p>
914 <dt class=
"hdlist1">grep.fallbackToNoIndex
</dt>
916 <p>If set to true, fall back to
<code>git grep --no-index
</code> if
<code>git grep
</code>
917 is executed outside of a git repository. Defaults to false.
</p>
924 <h2 id=
"_git">GIT
</h2>
925 <div class=
"sectionbody">
926 <div class=
"paragraph">
927 <p>Part of the
<a href=
"git.html">git(
1)
</a> suite
</p>
933 <div id=
"footer-text">
934 Last updated
2024-
04-
03 15:
35:
56 -
0700