gpt4 book ai didi

linux - 如果我们想在版本化的源代码中搜索,使用 git grep 比使用普通 grep 更好吗?

转载 作者:IT老高 更新时间:2023-10-28 12:36:28 26 4
gpt4 key购买 nike

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

最佳答案

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

示例

如果我想在我的项目中找到 foo,我可以使用 git grep 或独立的 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 传递给 grepgit grep 来获得这种行为)
  • grep.extendedRegexp:始终使用扩展正则表达式(您可以将 -E 传递给 grepgit grep 来获得这种行为)

在实践中

实际上,我将 gg 别名为 git grep -En,这几乎总是能满足我的要求。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com