• git-grep
    • 名称
    • 概要
    • 描述
    • 组态
    • OPTIONS
    • 例子
    • GIT

    git-grep

    原文: https://git-scm.com/docs/git-grep

    名称

    git-grep - 打印与图案匹配的线条

    概要

    1. git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp]
    2. [-v | --invert-match] [-h|-H] [--full-name]
    3. [-E | --extended-regexp] [-G | --basic-regexp]
    4. [-P | --perl-regexp]
    5. [-F | --fixed-strings] [-n | --line-number] [--column]
    6. [-l | --files-with-matches] [-L | --files-without-match]
    7. [(-O | --open-files-in-pager) [<pager>]]
    8. [-z | --null]
    9. [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet]
    10. [--max-depth <depth>] [--[no-]recursive]
    11. [--color[=<when>] | --no-color]
    12. [--break] [--heading] [-p | --show-function]
    13. [-A <post-context>] [-B <pre-context>] [-C <context>]
    14. [-W | --function-context]
    15. [--threads <num>]
    16. [-f <file>] [-e] <pattern>
    17. [--and|--or|--not|(|)|-e <pattern>…​]
    18. [--recurse-submodules] [--parent-basename <basename>]
    19. [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <tree>…​]
    20. [--] [<pathspec>…​]

    描述

    在工作树中的跟踪文件中查找指定的模式,在索引文件中注册的blob或给定树对象中的blob。模式是由换行符分隔的一个或多个搜索表达式的列表。搜索表达式匹配所有行的空字符串。

    组态

    1. grep.lineNumber

    如果设置为true,则默认启用-n选项。

    1. grep.column

    如果设置为true,则默认启用--column选项。

    1. grep.patternType

    设置默认匹配行为。使用 basic扩展固定perl 的值将启用--basic-regexp--extended-regexp--fixed-strings ,或--perl-regexp选项相应,而值默认将返回默认匹配行为。

    1. grep.extendedRegexp

    如果设置为true,则默认启用--extended-regexp选项。当grep.patternType选项设置为默认值以外的值时,将忽略此选项。

    1. grep.threads

    要使用的grep工作线程数。如果未设置(或设置为0),则默认使用8个线程(暂时)。

    1. grep.fullName

    如果设置为true,则默认启用--full-name选项。

    1. grep.fallbackToNoIndex

    如果设置为true,如果git grep在git存储库之外执行,则回退到git grep —no-index。默认为false。

    OPTIONS

    1. --cached

    不是搜索工作树中的跟踪文件,而是搜索索引文件中注册的blob。

    1. --no-index

    搜索当前目录中不由Git管理的文件。

    1. --untracked

    除了搜索工作树中的跟踪文件外,还可以搜索未跟踪的文件。

    1. --no-exclude-standard

    同时通过不遵守.gitignore机制来搜索被忽略的文件。仅适用于--untracked

    1. --exclude-standard

    不要注意通过.gitignore机制指定的忽略文件。仅在使用--no-index搜索当前目录中的文件时有用。

    1. --recurse-submodules

    递归搜索已在存储库中初始化和检出的每个子模块。当与< tree>组合使用时选项所有子模块输出的前缀将是父项目的< tree>的名称。宾语。

    1. -a
    1. --text

    处理二进制文件就像它们是文本一样。

    1. --textconv

    尊重textconv过滤器设置。

    1. --no-textconv

    不要尊重textconv过滤器设置。这是默认值。

    1. -i
    1. --ignore-case

    忽略模式和文件之间的大小写差异。

    1. -I

    与二进制文件中的模式不匹配。

    1. --max-depth <depth>

    对于每个< pathspec>在命令行上给出,最多下降< depth>目录级别。值-1表示没有限制。如果< pathspec&gt ;,则忽略此选项包含活动的通配符。换句话说,如果“a ”匹配名为“a ”的目录,则“*”字面匹配,因此—max-depth仍然有效。

    1. -r
    1. --recursive

    --max-depth=-1相同;这是默认值。

    1. --no-recursive

    --max-depth=0相同。

    1. -w
    1. --word-regexp

    仅在单词边界处匹配模式(从行的开头开始,或者以非单词字符开头;在行的末尾结束或后跟非单词字符)。

    1. -v
    1. --invert-match

    选择不匹配的行。

    1. -h
    1. -H

    默认情况下,该命令显示每个匹配的文件名。 -h选项用于抑制此输出。 -H是完整性的,除了它覆盖了之前在命令行中给出的-h之外什么都不做。

    1. --full-name

    从子目录运行时,该命令通常输出相对于当前目录的路径。此选项强制路径相对于项目顶级目录输出。

    1. -E
    1. --extended-regexp
    1. -G
    1. --basic-regexp

    使用POSIX扩展/基本正则表达式来表示模式。默认是使用基本正则表达式。

    1. -P
    1. --perl-regexp

    对模式使用与Perl兼容的正则表达式。

    对这些类型的正则表达式的支持是可选的编译时依赖性。如果Git没有编译并支持它们,那么提供此选项将导致它死亡。

    1. -F
    1. --fixed-strings

    对模式使用固定字符串(不要将模式解释为正则表达式)。

    1. -n
    1. --line-number

    将行号前缀为匹配行。

    1. --column

    从匹配行的开头开始对第一个匹配的1索引字节偏移进行前缀。

    1. -l
    1. --files-with-matches
    1. --name-only
    1. -L
    1. --files-without-match

    不显示每个匹配的行,而是仅显示包含(或不包含)匹配的文件的名称。为了更好地与 git diff 兼容,--name-only--files-with-matches的同义词。

    1. -O[<pager>]
    1. --open-files-in-pager[=<pager>]

    打开寻呼机中的匹配文件(不是 grep 的输出)。如果寻呼机恰好是“较少”或“vi”,并且用户仅指定了一个模式,则第一个文件将自动定位在第一个匹配位置。 pager参数是可选的;如果指定,它必须粘在没有空格的选项上。如果未指定pager,将使用默认寻呼机(参见 git-config [1] 中的core.pager)。

    1. -z
    1. --null

    输出\ 0而不是通常在文件名后面的字符。

    1. -o
    1. --only-matching

    仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上。

    1. -c
    1. --count

    而不是显示每个匹配的行,而是显示匹配的行数。

    1. --color[=<when>]

    显示彩色火柴。该值必须始终为(默认值),never或auto。

    1. --no-color

    关闭匹配突出显示,即使配置文件提供默认的颜色输出。与--color=never相同。

    1. --break

    在不同文件的匹配项之间打印空行。

    1. --heading

    在该文件中的匹配项上方显示文件名,而不是在每个显示的行的开头。

    1. -p
    1. --show-function

    显示包含匹配函数名称的上一行,除非匹配行是函数名称本身。名称的确定方式与 git diff 计算出补丁程序块标题的方式相同(参见在 gitattributes [5] 中定义自定义的hunk-header )。

    1. -<num>
    1. -C <num>
    1. --context <num>

    显示< num>前导和尾随行,并在连续的匹配组之间放置包含--的行。

    1. -A <num>
    1. --after-context <num>

    显示< num>尾随行,并在连续的匹配组之间放置一行包含--

    1. -B <num>
    1. --before-context <num>

    显示< num>引导线,并在连续的匹配组之间放置包含--的行。

    1. -W
    1. --function-context

    显示上一行中包含函数名称的周围文本,直到下一个函数名称之前的文本,有效地显示了找到匹配项的整个函数。

    1. --threads <num>

    要使用的grep工作线程数。有关详细信息,请参见 CONFIGURATION 中的grep.threads

    1. -f <file>

    从< file>中读取模式,每行一个。

    1. -e

    下一个参数是模式。此选项必须用于以-开头的模式,并且应该在将用户输入传递给grep的脚本中使用。多个模式由组合。

    1. --and
    1. --or
    1. --not
    1. ( …​ )

    指定如何使用布尔表达式组合多个模式。 --or是默认运算符。 --and的优先级高于--or-e必须用于所有模式。

    1. --all-match

    当给出多个模式表达式与--or组合时,指定此标志以限制匹配到具有匹配所有这些行的行的文件。

    1. -q
    1. --quiet

    不输出匹配的线;相反,当匹配时退出状态0,当没有匹配时退出非零状态。

    1. <tree>…​

    不是搜索工作树中的跟踪文件,而是搜索给定树中的blob。

    1. --

    表示选项的结束;其余参数是< pathspec>限制器。

    1. <pathspec>…​

    如果给定,则将搜索限制为与至少一个模式匹配的路径。两个前导路径匹配,并支持glob(7)模式。

    有关< pathspec>的详细信息语法,请参阅 gitglossary [7] 中的 pathspec 条目。

    例子

    1. git grep 'time_t' -- '*.[ch]'

    在工作目录及其子目录中的所有跟踪的.c和.h文件中查找time_t

    1. git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)

    查找具有#defineMAX_PATHPATH_MAX的行。

    1. git grep --all-match -e NODE -e Unexpected

    在具有与两者匹配的行的文件中查找具有NODEUnexpected的行。

    1. git grep solution -- :^Documentation

    查找solution,不包括Documentation中的文件。

    GIT

    部分 git [1] 套件