uTools-Manuals/docs/git/git grep.html
2019-05-07 10:40:55 +08:00

1 line
17 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>命名</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-grep  - 打印符合模式的行</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp]           [-v | --invert-match] [-h|-H] [--full-name]           [-E | --extended-regexp] [-G | --basic-regexp]           [-P | --perl-regexp]           [-F | --fixed-strings] [-n | --line-number]           [-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]           [--break] [--heading] [-p | --show-function]           [-A &lt;post-context&gt;] [-B &lt;pre-context&gt;] [-C &lt;context&gt;]           [-W | --function-context]           [--threads &lt;num&gt;]           [-f &lt;file&gt;] [-e] &lt;pattern&gt;           [--and|--or|--not|(|)|-e &lt;pattern&gt;…]           [--recurse-submodules] [--parent-basename &lt;basename&gt;]           [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | &lt;tree&gt;…]           [--] [&lt;pathspec&gt;…]</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>在工作树中跟踪文件中查找指定的模式,在索引文件中注册的斑点或给定树对象中的斑点。模式是由换行符分隔的一个或多个搜索表达式的列表。作为搜索表达式的空字符串与所有行匹配。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>组态</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>grep.lineNumber</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果设置为 true ,则<code>-n</code>默认启用选项。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>grep.patternType</p></div></div><div class="doc-postil"><div class="c-markdown"><p>设置默认的匹配行为。使用值<code>basic</code><code>extended</code><code>fixed</code>,或<code>perl</code>将启用<code>--basic-regexp</code><code>--extended-regexp</code><code>--fixed-strings</code>,或<code>--perl-regexp</code>相应的选项,而值<code>default</code>将返回到默认匹配行为。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>grep.extendedRegexp</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果设置为 true<code>--extended-regexp</code>默认启用选项。当该<code>grep.patternType</code>选项设置为非时,该选项将被忽略<code>default</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>grep.threads</p></div></div><div class="doc-postil"><div class="c-markdown"><p>要使用的 grep 工作线程数。如果未设置或设置为0则默认使用8个线程现在</p></div></div><div class="doc-postil"><div class="c-markdown"><p>grep.fullName</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果设置为 true ,则<code>--full-name</code>默认启用选项。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>grep.fallbackToNoIndex</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果设置为 true ,则回退到 git grep --no-index如果 git grep 在 git 存储库之外执行。默认为 false 。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>选项</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>--cached</p></div></div><div class="doc-postil"><div class="c-markdown"><p>搜索工作树中的追踪文件,而不是搜索索引文件中注册的斑点。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-index</p></div></div><div class="doc-postil"><div class="c-markdown"><p>搜索当前目录中不受 Git 管理的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--untracked</p></div></div><div class="doc-postil"><div class="c-markdown"><p>除了在工作树中跟踪文件中搜索外,还可以在未跟踪文件中搜索。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-exclude-standard</p></div></div><div class="doc-postil"><div class="c-markdown"><p>通过不尊重<code>.gitignore</code>机制来搜索被忽略的文件。只用于<code>--untracked</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>--exclude-standard</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要关注通过<code>.gitignore</code>机制指定的忽略文件。仅在使用当前目录搜索文件时有用<code>--no-index</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>--recurse-submodules</p></div></div><div class="doc-postil"><div class="c-markdown"><p>递归搜索已在存储库中初始化并检出的每个子模块。当与 &lt;tree&gt; 选项结合使用时,所有子模块输出的前缀将是父项目的 &lt;tree&gt; 对象的名称。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--parent-basename &lt;basename&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>仅限内部使用。为了使用 --recurse-submodules 选项产生统一的输出,可以使用此选项将父级的 &lt;tree&gt; 对象的基名称提供给子模块,以便子模块可以将其输出与父级名称相加,而不是使用 SHA1 子模块。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-a   --text</p></div></div><div class="doc-postil"><div class="c-markdown"><p>像处理文本一样处理二进制文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--textconv</p></div></div><div class="doc-postil"><div class="c-markdown"><p>尊重 textconv 过滤器设置。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-textconv</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要兑现 textconv 过滤器设置。这是默认设置。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-i   --ignore-case</p></div></div><div class="doc-postil"><div class="c-markdown"><p>忽略模式和文件之间的大小写区别。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-I</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不匹配二进制文件中的模式。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--max-depth &lt;depth&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>对于命令行中给出的每个 &lt;pathspec&gt; ,最多下降 &lt;depth&gt; 级别的目录。负值意味着没有限制。如果 &lt;pathspec&gt; 包含活动通配符,则忽略此选项。换句话说,如果 “a *” 匹配名为 “a *” 的目录,则“*”的字面匹配如此 -  max-depth 仍然有效。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-w   --word-regexp</p></div></div><div class="doc-postil"><div class="c-markdown"><p>仅在字边界处匹配模式(或者从一行的开始处开始,或者以非单词字符开头;结束于一行的末尾或后面跟着一个非单词字符)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-v   --invert-match</p></div></div><div class="doc-postil"><div class="c-markdown"><p>选择不匹配的行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-h   -H</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,该命令显示每个匹配的文件名。<code>-h</code>选项用于抑制此输出。<code>-H</code>是否有完整性,除了<code>-h</code>在命令行中早先给出的覆盖之外,不会执行任何操作。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--full-name</p></div></div><div class="doc-postil"><div class="c-markdown"><p>从子目录运行时,该命令通常会输出相对于当前目录的路径。该选项强制相对于项目顶部目录输出路径。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-E   --extended-regexp   -G   --basic-regexp</p></div></div><div class="doc-postil"><div class="c-markdown"><p>对于模式使用 POSIX 扩展/基本正则表达式。默认是使用基本的正则表达式。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-P   --perl-regexp</p></div></div><div class="doc-postil"><div class="c-markdown"><p>为模式使用 Perl 兼容的正则表达式。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>对这些类型的正则表达式的支持是可选的编译时间依赖性。如果 Git 没有编译支持它们,提供这个选项会导致它失效。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-F   --fixed-strings</p></div></div><div class="doc-postil"><div class="c-markdown"><p>使用固定字符串模式(不要将模式解释为正则表达式)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-n   --line-number</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在行号前加上匹配的行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-l   --files-with-matches   --name-only   -L   --files-without-match</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不显示每条匹配的行,只显示包含(或不包含)匹配的文件的名称。为了更好的兼容性<code>git diff</code><code>--name-only</code>是一个同义词<code>--files-with-matches</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>-O&lt;pager&gt;   --open-files-in-pager=&lt;pager&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>打开寻呼机中的匹配文件(不是输出<code>grep</code>)。如果寻呼机恰好是 “较少” 或 “vi” ,并且用户只指定一个模式,则第一个文件将自动定位在第一个匹配位置。该<code>pager</code>论点是可选的; 如果指定,它必须粘贴到选项没有空格。如果<code>pager</code>未指定,将使用默认寻呼机(请参阅<code>core.pager</code> git-config [1] )。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-z   --null</p></div></div><div class="doc-postil"><div class="c-markdown"><p>输出 \ 0 而不是通常跟在文件名后的字符。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-c   --count</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示匹配的行数,而不是显示每条匹配的行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--color=&lt;when&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示结果为彩色。该值必须 always默认never 或 auto 。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-color</p></div></div><div class="doc-postil"><div class="c-markdown"><p>关闭匹配突出显示,即使配置文件将默认设置为彩色输出。和<code>--color=never</code>一样。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--break</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在不同文件的匹配之间打印空行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--heading</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在文件的上方显示文件名,而不是在每个显示的行的开头。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-p   --show-function</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示包含匹配函数名称的上一行,除非匹配行是函数名称本身。该名称的确定方式与<code>git diff</code>制作补丁大小标头的方式相同(请参阅<code>Defining a custom hunk-header</code> gitattributes [5])。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-&lt;num&gt;   -C &lt;num&gt;   --context &lt;num&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示 &lt;num&gt; 前导和尾部线条,并放置包含<code>--</code>连续的匹配组之间的线条。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-A &lt;num&gt;   --after-context &lt;num&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示 &lt;num&gt; 尾随线,并<code>--</code>在连续的匹配组之间放置一行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-B &lt;num&gt;   --before-context &lt;num&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示 &lt;num&gt; 引出线,并<code>--</code>在相邻的匹配组之间放置一行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-W   --function-context</p></div></div><div class="doc-postil"><div class="c-markdown"><p>显示前一行中包含函数名称的周围文本,直到下一个函数名称之前的文本,从而有效地显示找到匹配的整个函数。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--threads &lt;num&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>要使用的 grep 工作线程数。参见<code>grep.threads</code><code>CONFIGURATION</code>获取更多信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-f &lt;file&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>&lt;file&gt; 中读取模式,每行一个。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-e</p></div></div><div class="doc-postil"><div class="c-markdown"><p>下一个参数是模式。这个选项必须用于模式的开头,<code>-</code>并且应该在将用户输入传递给 grep 的脚本中使用。多个模式组合在一起<code>or</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>--and   --or   --not   ( … )</p></div></div><div class="doc-postil"><div class="c-markdown"><p>指定如何使用布尔表达式组合多个模式。<code>--or</code>是默认的运营商。<code>--and</code><code>--or</code>优先。<code>-e</code>必须用于所有模式。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--all-match</p></div></div><div class="doc-postil"><div class="c-markdown"><p>将多个模式表达式结合使用时<code>--or</code>,会指定此标志以将匹配限制为具有与其匹配的所有行的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-q   --quiet</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要输出匹配的行; 取而代之的是当状态0出现匹配时退出当不存在时退出非零状态。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>&lt;tree&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>而不是在工作树中搜索跟踪文件,搜索给定树中的斑点。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--</p></div></div><div class="doc-postil"><div class="c-markdown"><p>表示选项结束; 其余的参数是 &lt;pathspec&gt; 限制器。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>&lt;pathspec&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果给定,则将搜索限制为至少匹配一个模式的路径。两个前导路径匹配并支持 glob7模式。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>有关 &lt;pathspec&gt; 语法的更多详细信息,请参阅<code>pathspec</code> gitglossary [7]中的条目。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>例子</h2></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git grep 'time_t' -- '*.[ch]'</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>查找<code>time_t</code>在所有跟踪的 .c 和 .h 文件在工作目录及其子目录。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>查找具有<code>#define</code>的线,要么是<code>MAX_PATH</code><code>PATH_MAX</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git grep --all-match -e NODE -e Unexpected</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>查找具有<code>NODE</code><code>Unexpected</code>两者匹配的行的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git grep solution -- :^Documentation</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>寻找<code>solution</code>,不包括<code>Documentation</code>中的文件。</p></div></div></div>