git-grep.html   [plain text]


<!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 8.4.5" />
<title>git-grep(1)</title>
<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;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

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, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}

div.sectionbody {
  font-family: serif;
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}

pre {
  padding: 0;
  margin: 0;
}

span#author {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  font-size: 1.1em;
}
span#email {
}
span#revnumber, span#revdate, span#revremark {
  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 {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  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 {
  color: #527bbd;
  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 {
  padding-left: 2.0em;
  margin-right: 10%;
}
div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock {
  padding-left: 2.0em;
  margin-right: 10%;
}
div.verseblock > div.content {
  white-space: pre;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

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.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

div.tableblock > table {
  border: 3px solid #527bbd;
}
thead {
  font-family: sans-serif;
  font-weight: bold;
}
tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

@media print {
  div#footer-badges { display: none; }
}

div#toctitle {
  color: #527bbd;
  font-family: sans-serif;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}
/* Overrides for manpage documents */
h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
h2 {
  border-style: none;
}
div.sectionbody {
  margin-left: 5%;
}

@media print {
  div#toc { display: none; }
}

/* 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 {
  color: #527bbd;
  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-attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock-content {
  white-space: pre;
}
div.verseblock-attribution {
  padding-top: 0.75em;
  text-align: left;
}

div.exampleblock-content {
  border-left: 2px solid silver;
  padding-left: 0.5em;
}

/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }
</style>
</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 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<div class="verseblock-content"><em>git grep</em> [-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]
           [(-O | --open-files-in-pager) [&lt;pager&gt;]]
           [-z | --null]
           [-c | --count] [--all-match] [-q | --quiet]
           [--max-depth &lt;depth&gt;]
           [--color[=&lt;when&gt;] | --no-color]
           [-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;]
           [--cached | --no-index | &lt;tree&gt;&#8230;]
           [--] [&lt;pathspec&gt;&#8230;]</div>
<div class="verseblock-attribution">
</div></div>
</div>
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Look for specified patterns in the tracked files in the work tree, blobs
registered in the index file, or blobs in given tree objects.</p></div>
</div>
<h2 id="_configuration">CONFIGURATION</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
grep.lineNumber
</dt>
<dd>
<p>
        If set to true, enable <em>-n</em> option by default.
</p>
</dd>
<dt class="hdlist1">
grep.extendedRegexp
</dt>
<dd>
<p>
        If set to true, enable <em>--extended-regexp</em> option by default.
</p>
</dd>
</dl></div>
</div>
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--cached
</dt>
<dd>
<p>
        Instead of searching tracked files in the working tree, search
        blobs registered in the index file.
</p>
</dd>
<dt class="hdlist1">
--no-index
</dt>
<dd>
<p>
        Search files in the current directory, not just those tracked by git.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--text
</dt>
<dd>
<p>
        Process binary files as if they were text.
</p>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--ignore-case
</dt>
<dd>
<p>
        Ignore case differences between the patterns and the
        files.
</p>
</dd>
<dt class="hdlist1">
-I
</dt>
<dd>
<p>
        Don&#8217;t match the pattern in binary files.
</p>
</dd>
<dt class="hdlist1">
--max-depth &lt;depth&gt;
</dt>
<dd>
<p>
        For each &lt;pathspec&gt; given on command line, descend at most &lt;depth&gt;
        levels of directories. A negative value means no limit.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--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 class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--invert-match
</dt>
<dd>
<p>
        Select non-matching lines.
</p>
</dd>
<dt class="hdlist1">
-h
</dt>
<dt class="hdlist1">
-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 class="hdlist1">
--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 class="hdlist1">
-E
</dt>
<dt class="hdlist1">
--extended-regexp
</dt>
<dt class="hdlist1">
-G
</dt>
<dt class="hdlist1">
--basic-regexp
</dt>
<dd>
<p>
        Use POSIX extended/basic regexp for patterns.  Default
        is to use basic regexp.
</p>
</dd>
<dt class="hdlist1">
-F
</dt>
<dt class="hdlist1">
--fixed-strings
</dt>
<dd>
<p>
        Use fixed strings for patterns (don&#8217;t interpret pattern
        as a regex).
</p>
</dd>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--line-number
</dt>
<dd>
<p>
        Prefix the line number to matching lines.
</p>
</dd>
<dt class="hdlist1">
-l
</dt>
<dt class="hdlist1">
--files-with-matches
</dt>
<dt class="hdlist1">
--name-only
</dt>
<dt class="hdlist1">
-L
</dt>
<dt class="hdlist1">
--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.
        For better compatibility with <em>git diff</em>, <tt>--name-only</tt> is a
        synonym for <tt>--files-with-matches</tt>.
</p>
</dd>
<dt class="hdlist1">
-O [&lt;pager&gt;]
</dt>
<dt class="hdlist1">
--open-files-in-pager [&lt;pager&gt;]
</dt>
<dd>
<p>
        Open the matching files in the pager (not the output of <em>grep</em>).
        If the pager happens to be "less" or "vi", and the user
        specified only one pattern, the first file is positioned at
        the first match automatically.
</p>
</dd>
<dt class="hdlist1">
-z
</dt>
<dt class="hdlist1">
--null
</dt>
<dd>
<p>
        Output \0 instead of the character that normally follows a
        file name.
</p>
</dd>
<dt class="hdlist1">
-c
</dt>
<dt class="hdlist1">
--count
</dt>
<dd>
<p>
        Instead of showing every matched line, show the number of
        lines that match.
</p>
</dd>
<dt class="hdlist1">
--color[=&lt;when&gt;]
</dt>
<dd>
<p>
        Show colored matches.
        The value must be always (the default), never, or auto.
</p>
</dd>
<dt class="hdlist1">
--no-color
</dt>
<dd>
<p>
        Turn off match highlighting, even when the configuration file
        gives the default to color output.
        Same as <tt>--color=never</tt>.
</p>
</dd>
<dt class="hdlist1">
-[ABC] &lt;context&gt;
</dt>
<dd>
<p>
        Show <tt>context</tt> trailing (<tt>A</tt>&#8201;&#8212;&#8201;after), or leading (<tt>B</tt>
       &#8201;&#8212;&#8201;before), or both (<tt>C</tt>&#8201;&#8212;&#8201;context) lines, and place a
        line containing <tt>--</tt> between contiguous groups of
        matches.
</p>
</dd>
<dt class="hdlist1">
-&lt;num&gt;
</dt>
<dd>
<p>
        A shortcut for specifying <tt>-C&lt;num&gt;</tt>.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--show-function
</dt>
<dd>
<p>
        Show the preceding line that contains the function name of
        the match, unless the matching line is a function name itself.
        The name is determined in the same way as <em>git diff</em> works out
        patch hunk headers (see <em>Defining a custom hunk-header</em> in
        <a href="gitattributes.html">gitattributes(5)</a>).
</p>
</dd>
<dt class="hdlist1">
-f &lt;file&gt;
</dt>
<dd>
<p>
        Read patterns from &lt;file&gt;, one per line.
</p>
</dd>
<dt class="hdlist1">
-e
</dt>
<dd>
<p>
        The next parameter is the pattern. This option has to be
        used for patterns starting with <tt>-</tt> and should be used in
        scripts passing user input to grep.  Multiple patterns are
        combined by <em>or</em>.
</p>
</dd>
<dt class="hdlist1">
--and
</dt>
<dt class="hdlist1">
--or
</dt>
<dt class="hdlist1">
--not
</dt>
<dt class="hdlist1">
( &#8230; )
</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 class="hdlist1">
--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 class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Do not output matched lines; instead, exit with status 0 when
        there is a match and with non-zero status when there isn&#8217;t.
</p>
</dd>
<dt class="hdlist1">
&lt;tree&gt;&#8230;
</dt>
<dd>
<p>
        Instead of searching tracked files in the working tree, search
        blobs in the given trees.
</p>
</dd>
<dt class="hdlist1">
--
</dt>
<dd>
<p>
        Signals the end of options; the rest of the parameters
        are &lt;pathspec&gt; limiters.
</p>
</dd>
<dt class="hdlist1">
&lt;pathspec&gt;&#8230;
</dt>
<dd>
<p>
        If given, limit the search to paths matching at least one pattern.
        Both leading paths match and glob(7) patterns are supported.
</p>
</dd>
</dl></div>
</div>
<h2 id="_examples">Examples</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
git grep &#39;time_t&#39; -- &#39;*.[ch]&#39;
</dt>
<dd>
<p>
        Looks for <tt>time_t</tt> in all tracked .c and .h files in the working
        directory and its subdirectories.
</p>
</dd>
<dt class="hdlist1">
git grep -e &#39;#define&#39; --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 class="hdlist1">
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>
</div>
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2011-06-01 22:32:49 UTC
</div>
</div>
</body>
</html>