远程上的' git grep '实际上在网络上搜索吗?



在远程上使用git grep实际上是搜索远程系统,还是搜索存储在本地机器上的分支?

git grep 'huntfor' 'refs/remotes/origin/main'
git grep 'huntfor' $(git ls-remote . 'refs/remotes/*' | ForEach-Object {($_ -split "`t")[1]})

git grep只搜索工作树和索引,除非您指定一个修订,因此,它通常只搜索本地机器上的文件和修订。如果您的存储库中没有该版本,则无法搜索。

但是,如果您使用的是部分克隆,那么您的存储库可能包含来自某个远程(称为远程)的承诺包,在这种情况下,Git将假装它拥有有问题的对象,并在缺少这些对象时按需下载它们。在这种情况下,如果您对请求的特定修订有承诺对象,Git可能会连接到远程承诺以填充相关对象。但是,您尚未下载允诺对象的远程上的其他更改(例如自git fetchgit pull以来发生的更改)仍然无法访问。