blob: 9f2bcd449d652964ab839394f24ab049f933966f [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 7.0.2" />
<style type="text/css">
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
/*
border: 1px solid red;
*/
}
body {
margin: 1em 5% 1em 5%;
}
a { color: blue; }
a:visited { color: fuchsia; }
em {
font-style: italic;
}
strong {
font-weight: bold;
}
tt {
color: navy;
}
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
font-family: sans-serif;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
}
h1 {
border-bottom: 2px solid silver;
}
h2 {
border-bottom: 2px solid silver;
padding-top: 0.5em;
}
div.sectionbody {
font-family: serif;
margin-left: 0;
}
hr {
border: 1px solid silver;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
pre {
padding: 0;
margin: 0;
}
span#author {
color: #527bbd;
font-family: sans-serif;
font-weight: bold;
font-size: 1.2em;
}
span#email {
}
span#revision {
font-family: sans-serif;
}
div#footer {
font-family: sans-serif;
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
div#footer-text {
float: left;
padding-bottom: 0.5em;
}
div#footer-badges {
float: right;
padding-bottom: 0.5em;
}
div#preamble,
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-right: 10%;
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.5em;
margin-bottom: 2.5em;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
font-family: sans-serif;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid silver;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
div.quoteblock > div.content {
padding-left: 2.0em;
}
div.quoteblock .attribution {
text-align: right;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #527bbd;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 2px solid silver;
}
div.exampleblock > div.content {
border-left: 2px solid silver;
padding: 0.5em;
}
div.verseblock div.content {
white-space: pre;
}
div.imageblock div.content { padding-left: 0; }
div.imageblock img { border: 1px solid silver; }
span.image img { border-style: none; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: italic;
}
dd > *:first-child {
margin-top: 0;
}
ul, ol {
list-style-position: outside;
}
ol.olist2 {
list-style-type: lower-alpha;
}
div.tableblock > table {
border-color: #527bbd;
border-width: 3px;
}
thead {
font-family: sans-serif;
font-weight: bold;
}
tfoot {
font-weight: bold;
}
div.hlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
td.hlist1 {
vertical-align: top;
font-style: italic;
padding-right: 0.8em;
}
td.hlist2 {
vertical-align: top;
}
@media print {
div#footer-badges { display: none; }
}
include::./stylesheets/xhtml11-manpage.css[]
/* Workarounds for IE6's broken and incomplete CSS2. */
div.sidebar-content {
background: #ffffee;
border: 1px solid silver;
padding: 0.5em;
}
div.sidebar-title, div.image-title {
font-family: sans-serif;
font-weight: bold;
margin-top: 0.0em;
margin-bottom: 0.5em;
}
div.listingblock div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
div.quoteblock-content {
padding-left: 2.0em;
}
div.exampleblock-content {
border-left: 2px solid silver;
padding-left: 0.5em;
}
</style>
<title>git-grep(1)</title>
</head>
<body>
<div id="header">
<h1>
git-grep(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-grep -
Print lines matching a pattern
</p>
</div>
</div>
<h2>SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<div class="content"><em>git-grep</em> [--cached]
[-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
[-v | --invert-match] [-h|-H] [--full-name]
[-E | --extended-regexp] [-G | --basic-regexp]
[-F | --fixed-strings] [-n]
[-l | --files-with-matches] [-L | --files-without-match]
[-c | --count] [--all-match]
[-A &lt;post-context&gt;] [-B &lt;pre-context&gt;] [-C &lt;context&gt;]
[-f &lt;file&gt;] [-e] &lt;pattern&gt;
[--and|--or|--not|(|)|-e &lt;pattern&gt;&#8230;] [&lt;tree&gt;&#8230;]
[--] [&lt;path&gt;&#8230;]</div></div>
</div>
<h2>DESCRIPTION</h2>
<div class="sectionbody">
<p>Look for specified patterns in the working tree files, blobs
registered in the index file, or given tree objects.</p>
</div>
<h2>OPTIONS</h2>
<div class="sectionbody">
<dl>
<dt>
--cached
</dt>
<dd>
<p>
Instead of searching in the working tree files, check
the blobs registered in the index file.
</p>
</dd>
<dt>
-a | --text
</dt>
<dd>
<p>
Process binary files as if they were text.
</p>
</dd>
<dt>
-i | --ignore-case
</dt>
<dd>
<p>
Ignore case differences between the patterns and the
files.
</p>
</dd>
<dt>
-I
</dt>
<dd>
<p>
Don't match the pattern in binary files.
</p>
</dd>
<dt>
-w | --word-regexp
</dt>
<dd>
<p>
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).
</p>
</dd>
<dt>
-v | --invert-match
</dt>
<dd>
<p>
Select non-matching lines.
</p>
</dd>
<dt>
-h | -H
</dt>
<dd>
<p>
By default, the command shows the filename for each
match. <tt>-h</tt> option is used to suppress this output.
<tt>-H</tt> is there for completeness and does not do anything
except it overrides <tt>-h</tt> given earlier on the command
line.
</p>
</dd>
<dt>
--full-name
</dt>
<dd>
<p>
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.
</p>
</dd>
<dt>
-E | --extended-regexp | -G | --basic-regexp
</dt>
<dd>
<p>
Use POSIX extended/basic regexp for patterns. Default
is to use basic regexp.
</p>
</dd>
<dt>
-F | --fixed-strings
</dt>
<dd>
<p>
Use fixed strings for patterns (don't interpret pattern
as a regex).
</p>
</dd>
<dt>
-n
</dt>
<dd>
<p>
Prefix the line number to matching lines.
</p>
</dd>
<dt>
-l | --files-with-matches | -L | --files-without-match
</dt>
<dd>
<p>
Instead of showing every matched line, show only the
names of files that contain (or do not contain) matches.
</p>
</dd>
<dt>
-c | --count
</dt>
<dd>
<p>
Instead of showing every matched line, show the number of
lines that match.
</p>
</dd>
<dt>
-[ABC] &lt;context&gt;
</dt>
<dd>
<p>
Show <tt>context</tt> trailing (<tt>A</tt> &#8212; after), or leading (<tt>B</tt>
&#8212; before), or both (<tt>C</tt> &#8212; context) lines, and place a
line containing <tt>--</tt> between contiguous groups of
matches.
</p>
</dd>
<dt>
-&lt;num&gt;
</dt>
<dd>
<p>
A shortcut for specifying -C&lt;num&gt;.
</p>
</dd>
<dt>
-f &lt;file&gt;
</dt>
<dd>
<p>
Read patterns from &lt;file&gt;, one per line.
</p>
</dd>
<dt>
-e
</dt>
<dd>
<p>
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 <em>or</em>.
</p>
</dd>
<dt>
--and | --or | --not | ( | )
</dt>
<dd>
<p>
Specify how multiple patterns are combined using Boolean
expressions. <tt>--or</tt> is the default operator. <tt>--and</tt> has
higher precedence than <tt>--or</tt>. <tt>-e</tt> has to be used for all
patterns.
</p>
</dd>
<dt>
--all-match
</dt>
<dd>
<p>
When giving multiple pattern expressions combined with <tt>--or</tt>,
this flag is specified to limit the match to files that
have lines to match all of them.
</p>
</dd>
<dt>
<tt>&lt;tree&gt;&#8230;</tt>
</dt>
<dd>
<p>
Search blobs in the trees for specified patterns.
</p>
</dd>
<dt>
--
</dt>
<dd>
<p>
Signals the end of options; the rest of the parameters
are &lt;path&gt; limiters.
</p>
</dd>
</dl>
</div>
<h2>Example</h2>
<div class="sectionbody">
<dl>
<dt>
git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)
</dt>
<dd>
<p>
Looks for a line that has <tt>#define</tt> and either <tt>MAX_PATH</tt> or
<tt>PATH_MAX</tt>.
</p>
</dd>
<dt>
git grep --all-match -e NODE -e Unexpected
</dt>
<dd>
<p>
Looks for a line that has <tt>NODE</tt> or <tt>Unexpected</tt> in
files that have lines that match both.
</p>
</dd>
</dl>
</div>
<h2>Author</h2>
<div class="sectionbody">
<p>Originally written by Linus Torvalds &lt;torvalds@osdl.org&gt;, later
revamped by Junio C Hamano.</p>
</div>
<h2>Documentation</h2>
<div class="sectionbody">
<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>
</div>
<h2>GIT</h2>
<div class="sectionbody">
<p>Part of the <a href="git.html">git(7)</a> suite</p>
</div>
<div id="footer">
<div id="footer-text">
Last updated 14-Nov-2007 12:11:33 UTC
</div>
</div>
</body>
</html>