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.45.1 → 2.46.2 no changes
- 2.45.0 04/29/24
- 2.43.1 → 2.44.2 no changes
- 2.43.0 11/20/23
- 2.38.1 → 2.42.3 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
- 2.25.2 → 2.25.5 no changes
- 2.25.1 02/17/20
- 2.24.1 → 2.25.0 no changes
- 2.24.0 11/04/19
- 2.22.1 → 2.23.4 no changes
- 2.22.0 06/07/19
- 2.20.1 → 2.21.4 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.16.6 → 2.17.6 no changes
- 2.15.4 no changes
- 2.14.6 12/06/19
- 2.13.7 no changes
- 2.12.5 09/22/17
- 2.10.5 → 2.11.4 no changes
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 no changes
- 2.6.7 05/05/17
- 2.2.3 → 2.5.6 no changes
- 2.1.4 12/17/14
- 2.0.5 12/17/14
概述
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 | --untracked | --no-index] | <tree>…] [--] [<pathspec>…]
描述
在工作区中的跟踪文件、在索引文件中注册的 blobs 或给定树对象中的 blobs 中寻找指定的模式。 模式是由一个或多个搜索表达式组成的列表,用换行符分隔。 一个空的字符串作为搜索表达式可以匹配所有的行。
选项
- --cached
-
与其搜索工作区中的跟踪文件,不如搜索索引文件中注册的 blobs。
- --untracked
-
除了在工作区中的跟踪文件中搜索外,还可以在未跟踪的文件中搜索。
- --no-index
-
在当前目录中搜索不由 Git 管理的文件,或者忽略当前目录由 Git 管理的事实。这类似于运行带有
-r
选项的常规grep(1)
实用程序,但有一些额外的好处,比如使用路径模式来限制路径;更多信息请参见 gitglossary[7] 中的 pathspec 条目。此选项不能与
--cached
或--untracked
一起使用。另请参见下面 CONFIGURATION 部分中的grep.fallbackToNoIndex
。 - --no-exclude-standard
-
也可以通过不遵守
.gitignore
机制在被忽略的文件中搜索。只对--untracked
有用。 - --exclude-standard
-
不注意通过
.gitignore
机制指定的被忽略的文件。 只有在用--no-index
搜索当前目录下的文件时才有用。 - --recurse-submodules
-
Recursively search in each submodule that is active and checked out in the repository. When used in combination with the <tree> option the prefix of all submodule output will be the name of the parent project’s <tree> object. This option cannot be used together with
--untracked
, and it has no effect if--no-index
is specified. - -a
- --text
-
像处理文本一样处理二进制文件。
- --textconv
-
认可 textconv 过滤器设置。
- --no-textconv
-
不用认可 textconv 过滤器的设置。 这是默认的。
- -i
- --ignore-case
-
忽略图案和文件之间的大小写差异。
- -I
-
不匹配二进制文件中的模式。
- --max-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[<分页器>]
- --open-files-in-pager[=<分页器>]
-
在分页器中打开匹配的文件(不是 grep 的输出)。 如果分页器恰好是 "less" 或 "vi",而用户只指定了一个模式,那么第一个文件就会自动定位在第一个匹配处。
pager
参数是可选的;如果指定,它必须与选项卡在一起,没有空格。如果没有指定pager
,将使用默认的分页器(见 git-config[1] 中的core.pager
)。 - -z
- --null
-
Use \0 as the delimiter for pathnames in the output, and print them verbatim. Without this option, pathnames with "unusual" characters are quoted as explained for the configuration variable
core.quotePath
(see 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 <数量>
- --context <数量>
-
显示 <num> 前导行和后导行,并在连续的匹配组之间放置一个包含`--`的行。
- -A <num>
- --after-context <数量>
-
显示 <num> 尾行,并在连续的匹配组之间放置一个包含
--
的行。 - -B <num>
- --before-context <数量>
-
显示 <num> 引导行,并在连续的匹配组之间放置一个包含
--
的行。 - -W
- --function-context
-
显示从包含函数名的前一行到下一个函数名之前的周围文本,有效地显示找到匹配的整个函数。函数名的确定方式与
git diff
确定补丁组头的方式相同(见 gitattributes[5] 中的 ‘定义自定义组头’)。 - -C <数量>
- --max-count <数量>
-
限制每个文件的匹配数量。当使用
-v
或--invert-match
选项时,搜索会在指定的非匹配数量后停止。值为 -1 将返回无限的结果(默认)。值为 0 将立即退出,状态为非零。 - --threads <数量>
-
Number of
grep
worker threads to use. See NOTES ON THREADS andgrep.threads
in CONFIGURATION for more information. - -f <文件>
-
从 <文件> 中读取模式,每行一个。
通过<文件> 传递模式,可以提供一个包含一个 \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 退出,没有匹配时以非零状态退出。
- <目录树>…
-
与其在工作区中搜索被追踪的文件,不如在给定的目录树中搜索 blobs。
- --
-
标志着选项的结束;其余的参数是 <路径规范> 限制器。
- <路径规范>…
-
如果给定,将搜索限制在与至少一个模式匹配的路径上。 前导路径匹配和 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`中的文件。
线条的注释
The --threads
option (and the grep.threads
configuration) will be ignored when --open-files-in-pager
is used, forcing a single-threaded execution.
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. Thus, if low performance is experienced 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] 文档