Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.43.0 11/20/23
- 2.38.1 → 2.42.1 no changes
- 2.38.0 10/02/22
- 2.32.1 → 2.37.7 no changes
- 2.32.0 06/06/21
- 2.30.1 → 2.31.8 no changes
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.27.1 → 2.28.1 no changes
- 2.27.0 06/01/20
- 2.26.1 → 2.26.3 no changes
- 2.26.0 03/22/20
概述
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] [--column] [-l | --files-with-matches] [-L | --files-without-match] [(-O | --open-files-in-pager) [<pager>]] [-z | --null] [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet] [--max-depth <depth>] [--[no-]recursive] [--color[=<when>] | --no-color] [--break] [--heading] [-p | --show-function] [-A <post-context>] [-B <pre-context>] [-C <context>] [-W | --function-context] [(-m | --max-count) <num>] [--threads <num>] [-f <file>] [-e] <pattern> [--and|--or|--not|(|)|-e <pattern>…] [--recurse-submodules] [--parent-basename <basename>] [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <tree>…] [--] [<pathspec>…]
描述
在工作区中的跟踪文件、在索引文件中注册的 blobs 或给定树对象中的 blobs 中寻找指定的模式。 模式是由一个或多个搜索表达式组成的列表,用换行符分隔。 一个空的字符串作为搜索表达式可以匹配所有的行。
选项
- --cached
-
与其搜索工作区中的跟踪文件,不如搜索索引文件中注册的 blobs。
- --no-index
-
搜索当前目录中不被 Git 管理的文件。
- --untracked
-
除了在工作区中的跟踪文件中搜索外,还可以在未跟踪的文件中搜索。
- --no-exclude-standard
-
也可以通过不遵守
.gitignore
机制在被忽略的文件中搜索。只对--untracked
有用。 - --exclude-standard
-
不注意通过
.gitignore
机制指定的被忽略的文件。 只有在用--no-index
搜索当前目录下的文件时才有用。 - --recurse-submodules
-
递归搜索在仓库中激活和检出的每个子模块。 当与 <tree> 选项结合使用时,所有子模块输出的前缀将是父项目的 <tree> 对象的名称。如果给了
--no-index
,这个选项就没有效果。 - -a
- --text
-
像处理文本一样处理二进制文件。
- --textconv
-
认可 textconv 过滤器设置。
- --no-textconv
-
不用认可 textconv 过滤器的设置。 这是默认的。
- -i
- --ignore-case
-
忽略图案和文件之间的大小写差异。
- -I
-
不匹配二进制文件中的模式。
- --max-depth <depth>
-
对于命令行上给出的每个 <路径规范>,最多下降 <深度> 级目录。值为-1意味着没有限制。 如果 <路径规范> 包含有效的通配符,这个选项会被忽略。 换句话说,如果 "a*" 匹配名为 "a* "的目录,"*" 就会被匹配,所以 --max-depth 仍然有效。
- -r
- --recursive
-
与
--max-depth=-1
相同;这是默认值。 - --no-recursive
-
与
--max-depth=0
相同。 - -w
- --word-regexp
-
只在词的边界处匹配模式(要么从一行的开头开始,要么前面是一个非词的字符;要么在一行的结尾结束,要么后面是一个非词的字符)。
- -v
- --invert-match
-
选择非匹配的行。
- -h
- -H
-
默认情况下,该命令显示每个匹配的文件名。
-h
选项用于抑制这种输出。-H
是为了完整性而存在的,除了覆盖先前在命令行中给出的-h
外,它不做任何事情。 - --full-name
-
当从一个子目录运行时,该命令通常会输出相对于当前目录的路径。 这个选项强制输出相对于项目顶层目录的路径。
- -E
- --extended-regexp
- -G
- --basic-regexp
-
对模式使用 POSIX 扩展/基本的正则表达式。 默认是使用基本的正则表达式。
- -P
- --perl-regexp
-
使用与 Perl 兼容的正则表达式的模式。
对这些类型的正则表达式的支持是一个可选的编译时依赖。如果Git在编译时没有对它们的支持,提供这个选项将导致它死亡。
- -F
- --fixed-strings
-
使用固定的字符串来表示模式(不要把模式解释为一个重合词)。
- -n
- --line-number
-
在匹配的行前加上行号。
- --column
-
前缀为从匹配行开始的第一个匹配的索引的字节偏移量。
- -l
- --files-with-matches
- --name-only
- -L
- --files-without-match
-
不显示每个匹配行,只显示包含(或不包含)匹配的文件名。 为了与 git diff 更好地兼容,
--name-only
是--files-with-matches
的同义词。 - -O[<pager>]
- --在分页中打开文件[=<分页器>]
-
在分页器中打开匹配的文件(不是 grep 的输出)。 如果分页器恰好是 "less" 或 "vi",而用户只指定了一个模式,那么第一个文件就会自动定位在第一个匹配处。
pager
参数是可选的;如果指定,它必须与选项卡在一起,没有空格。如果没有指定pager
,将使用默认的分页器(见 git-config[1] 中的core.pager
)。 - -z
- --null
-
使用\0作为输出中路径名的分隔符,并逐字打印它们。按照配置变量core.quotePath的说明,引用带有“ unusual”字符的路径名 (查阅git-config[1])。
- -o
- --only-matching
-
只打印匹配行中的匹配(非空)部分,每一个这样的部分都在单独的输出行中。
- -c
- --count
-
与其显示每一个匹配的行,不如显示匹配的行数。
- --color[=<when>]
-
显示有颜色的匹配。 该值必须是总是(默认值)、从不、或自动。
- --no-color
-
关闭匹配高亮,即使在配置文件中默认为彩色输出。 与
--color=never
相同。 - --break
-
在不同文件的匹配之间打印一个空行。
- --heading
-
在该文件中的匹配项上方显示文件名,而不是在每个显示行的开头。
- -p
- --show-function
-
显示包含匹配的函数名的前一行,除非匹配的一行本身就是一个函数名。 该名称的确定方式与
git diff
编制补丁组头的方式相同(见 gitattributes[5] 中的 ‘定义自定义组头’)。 - -<num>
- -C <num>
- --context <num>
-
显示 <num> 前导行和后导行,并在连续的匹配组之间放置一个包含`--`的行。
- -A <num>
- --after-context <num>
-
显示 <num> 尾行,并在连续的匹配组之间放置一个包含
--
的行。 - -B <num>
- --before-context <num>
-
显示 <num> 引导行,并在连续的匹配组之间放置一个包含
--
的行。 - -W
- --function-context
-
显示从包含函数名的前一行到下一个函数名之前的周围文本,有效地显示找到匹配的整个函数。函数名的确定方式与
git diff
确定补丁组头的方式相同(见 gitattributes[5] 中的 ‘定义自定义组头’)。 - -m <num>
- --max-count <num>
-
限制每个文件的匹配数量。当使用
-v
或--invert-match
选项时,搜索会在指定的非匹配数量后停止。值为 -1 将返回无限的结果(默认)。值为 0 将立即退出,状态为非零。 - --threads <num>
-
要使用的 grep 工作线程的数量。 更多信息见 “配置” 中的
grep.threads
。 - -f <file>
-
从 <文件> 中读取模式,每行一个。
通过<文件> 传递模式,可以提供一个包含一个 \0 的搜索模式。
不是所有的模式类型都支持包含 \0 的模式。如果一个给定的模式类型不支持这样的模式,Git 会出错。
--perl-regexp
模式类型在针对 PCRE v2 后端进行编译时,对这些类型的模式有最广泛的支持。在 2.23.0 之前的 Git 版本中,含有 \0 的模式会被默默地认为是固定的。这一点从未被记录下来,还有一些奇怪的、未被记录的互动,例如包含 \0 的非 ASCII 模式和
--ignore-case
之间。在未来的版本中,我们可能会学会为更多的搜索后端支持含有 \0 的模式,在此之前,当有关的模式类型不支持它们时,我们就会死心。
- -e
-
下一个参数是模式。这个选项必须用于以
-
开头的模式,并应在将用户输入传递给 grep 的脚本中使用。 多个模式用 or 组合。 - --and
- --or
- --not
- ( … )
-
使用布尔表达式指定多个模式的组合方式。
--or
是默认的运算符。--and
比--or
有更高的优先权。-e
必须用于所有模式。 - --all-match
-
当给出多个模式表达式与
--or
组合时,指定这个标志是为了将匹配限制在有行的文件中,以匹配所有的文件。 - -q
- --quiet
-
不输出匹配的行;相反,当有匹配时以状态 0 退出,没有匹配时以非零状态退出。
- <tree>…
-
与其在工作区中搜索被追踪的文件,不如在给定的目录树中搜索 blobs。
- --
-
标志着选项的结束;其余的参数是 <路径规范> 限制器。
- <pathspec>…
-
如果给定,将搜索限制在与至少一个模式匹配的路径上。 前导路径匹配和 glob(7) 模式都被支持。
有关 <指定路径> 格式的更多细节,请参考 gitglossary[7]。
实例
-
git grep 'time_t' -- '*.[ch]'
-
在工作目录及其子目录中所有跟踪的 .c 和 .h 文件中寻找
time_t
。 -
git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)
-
寻找有
#define
和MAX_PATH
或PATH_MAX
的行。 -
git grep --all-match -e NODE -e Unexpected
-
在文件中寻找有
NODE
或Unexpected
字样的行,这些行与这两个字相匹配。 -
git grep solution -- :^Documentation
-
寻找
solution
,排除 `Documentation`中的文件。
线条的注释
当使用 --open-files-in-pager
时,--threads
选项(和 grep.threads 配置)将被忽略,强制单线程执行。
When grepping the object store (with --cached
or giving tree objects), running with multiple threads might perform slower than single threaded if --textconv
is given and there are too many text conversions. So if you experience low performance in this case, it might be desirable to use --threads=1
.
配置
Warning
|
Missing See original version for this content. |
Warning
|
Missing See original version for this content. |
GIT
属于 git[1] 文档