13

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

$ cat A
1
$ cd d
$ cat B
1
$ git grep 1
B:1
$ cd ..;git grep 1
A:1
B:1

我怎么知道git grep“搜索整个树,无论我在当前的工作目录中”?

4

3 回答 3

16

:/魔法之路

git grep pattern -- :/

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

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

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

于 2016-08-03T16:18:03.680 回答
11

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

[alias]
    rgrep = !git grep

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

git grep $pattern -- `git rev-parse --show-toplevel`
于 2012-06-03T07:25:58.150 回答
0

将此添加到您的 Git 配置文件中,以创建一个grepall别名来满足您的需求:

[alias]
    grepall = !git grep

(非本地别名,例如以 a 开头的别名,!总是从存储库的顶层运行。)

于 2012-06-03T07:32:28.640 回答