通常当我发出时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
“搜索整个树,无论我在当前的工作目录中”?
:/
魔法之路
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 :/”会添加更新的内容
运行 shell 命令的 Git 别名始终在顶级目录中执行(参见git config
手册页),因此您可以将其添加到.gitconfig
文件中:
[alias]
rgrep = !git grep
或者,您可以使用git rev-parse --show-toplevel
获取根目录,然后您可以将其git grep
作为脚本或别名的基础传递给:
git grep $pattern -- `git rev-parse --show-toplevel`
将此添加到您的 Git 配置文件中,以创建一个grepall
别名来满足您的需求:
[alias]
grepall = !git grep
(非本地别名,例如以 a 开头的别名,!
总是从存储库的顶层运行。)