通常情况下,当我发出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
“搜索整个树,无论我当前的工作目录是什么?”
答案 0 :(得分:10)
运行shell命令的Git别名总是在顶级目录中执行(请参阅git config
man page),因此您可以将其添加到.gitconfig
文件中:
[alias]
rgrep = !git grep
或者,您可以使用git rev-parse --show-toplevel
获取根目录,然后可以将其作为脚本或别名的基础传递给git grep
:
git grep $pattern -- `git rev-parse --show-toplevel`
答案 1 :(得分:10)
:/
魔术路径
git grep pattern -- :/
对于此命令和其他命令,适用于Git 1.9.1,如:https://stackoverflow.com/a/31696782/895245
中所述TODO在浏览文档后我找不到明确的文档参考,但在发行说明中有时会提到它:
Documentation / RelNotes / 1.7.6.txt:39:是一个无操作,但“git add -u:/”会添加更新内容
答案 2 :(得分:0)
将此添加到您的Git配置文件中,以创建一个grepall
别名,它可以执行您想要的操作:
[alias]
grepall = !git grep
(非本地别名,例如以!
开头的别名,总是从存储库的顶层运行。)