如何git grep只有一组文件扩展名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何git grep只有一组文件扩展名相关的知识,希望对你有一定的参考价值。

如何执行git grep并将检查的文件限制为一组文件。我希望能够grep查找MyFunc的.cpp和.h文件的内容。例如:

git grep "MyFunc" -- *.[hc]*

但是,这也匹配.c文件和.cs文件。

答案

使用:

git grep "MyFunc" -- '*.cpp' '*.h'

引号是必要的,以便git扩展通配符而不是shell。如果省略它们,它只会搜索当前目录中的文件,而不是包含子目录。

另一答案

这可以通过以下方式在Windows中使用git bash时实现:

git grep "MyFunc" -- *.{cpp,h}

甚至更简单:

git grep "MyFunc" -- *.cpp *.h

git glossary上对pathspec的解释提到使用fnmatch(3)匹配模式。它匹配Shell and Utilities volume of IEEE Std 1003.1-2001, Section 2.13.1描述的模式(包括多个字符)并导致basic regular expressions matching multiple characters并给了我第一个解决方案。

进一步的研究通过查看glob的文档引导我进入第二个解决方案。

以上是关于如何git grep只有一组文件扩展名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Git 历史记录中 grep(搜索)已提交的代码

如何从visual studio代码(拉/推)访问git gist?

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

如何从 git grep 搜索中排除某些目录/文件