在 git 存储库中,使用 git grep 与旧的 grep 相比有什么区别/好处吗?
一个例子是?

最佳答案

两者非常相似。主要区别在于 git grep 默认在 git 跟踪的文件中搜索。

例子

如果我想在我的项目中找到 foo,我可以使用 git grep 或好的 ol' 独立 grep :

git grep foo
grep -R foo .
git grep 版本将只搜索 git 跟踪的文件,而 grep 版本将搜索目录中的所有内容。到目前为止如此相似;根据您想要实现的目标,任何一种都可能更好。

如果我们想将搜索限制为仅 .rb 文件怎么办?
git grep foo -- *.rb
grep -R --include=*.rb foo .

普通的旧 grep 版本变得有点冗长,但如果您习惯使用 grep,那可能不是问题。他们仍然不会搜索完全相同的文件,但这同样取决于您想要实现的目标。

在以前的项目版本中搜索怎么样?
git grep foo HEAD^
git checkout HEAD^; grep -R foo .; git checkout -

这就是 git grep 真正不同的地方:您可以在项目的另一个修订版中进行搜索,而无需先检查它。不过,这对我来说并不是经常出现的情况。我通常想在我 checkout 的项目的版本中搜索。

配置 git grep

有一些 git config 变量可以修改 git grep 的行为并避免需要传递几个命令行参数:
  • grep.lineNumber :始终显示匹配的行号(您可以将 -n 传递给 grep 和 0x251812123123123131231313131318123131231812313123131312313131231312313131312313123123131231312312314
  • git grep :始终使用扩展的正则表达式(您可以将 grep.extendedRegexp 传递给 -E 和 0x251813141 到 0x251813231231313131313123131313131313131

    在实践中

    实际上,我将 grep 别名为 git grep ,这几乎总是我想要的。

    关于linux - 如果我们想在版本化的源代码中搜索,使用 git grep 比普通的 grep 更好吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17557684/

  • 10-14 16:02
    查看更多