当我在子目录中时,如何在整个树中git grep?

Chi*_*Lan 9 git grep

通常,当我发出时git grep,它只会搜索当前目录及其下方

$ cat A
1
$ cd d
$ cat B
1
$ git grep 1
B:1
$ cd ..;git grep 1
A:1
B:1
Run Code Online (Sandbox Code Playgroud)

如何判断git grep"搜索整个树,无论我当前的工作目录是什么"?

Cir*_*四事件 11

:/ 神奇的道路

git grep pattern -- :/
Run Code Online (Sandbox Code Playgroud)

适用于此命令和其他命令的Git 1.9.1,如下所述:https://stackoverflow.com/a/31696782/895245

TODO我在浏览文档后找不到明确的文档参考,但在发行说明中有时会提到:

Documentation/RelNotes/1.7.6.txt:39:是一个无操作,但"git add -u:/"会添加更新的内容


geo*_*ock 10

运行shell命令的Git别名总是在顶级目录中执行(参见git config手册页),因此您可以将其添加到您的.gitconfig文件中:

[alias]
    rgrep = !git grep
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用git rev-parse --show-toplevel获取根目录,然后可以将其git grep作为脚本或别名的基础传递给根目录:

git grep $pattern -- `git rev-parse --show-toplevel`
Run Code Online (Sandbox Code Playgroud)