首页 > 解决方案 > 在远程存储库中搜索文件名/内容

问题描述

是否可以在没有本地克隆的情况下搜索远程存储库中的文件?例如,给定这个项目cloneURL,我可以在主分支中搜索具有特定名称的文件吗?包含特定字符串的文件?

git-ls-remote似乎它有点接近我想要的,但是将它与git-ls-filesgit-grep不起作用(SO帖子展示了如何在存储库的本地实例上使用这些来完成相同的任务

git ls-remote https://github.com/Vincit/objection.js.git ls-files '*/mixin.js'

只是返回到命令提示符,根本不打印任何输出、错误或其他。

标签: git

解决方案


是否可以在没有本地克隆的情况下搜索远程存储库中的文件?

目前的简短回答是“否”。

虽然ls-remote看起来很有希望,但它只列出了引用,而不是文件。

您也不能以您尝试的方式组合 git 命令(除非所涉及的命令专门支持此类组合)。

除了只处理 refs 之外,尝试结合ls-remotewith的原因是ls-files什么都不返回的原因是ls-files命令行上的条目被命令解释ls-remote为将输出限制为仅返回与“ls-files”(或“*/mixin”匹配的 refs .js”)。

没有,所以你没有输出。

如果您担心存储库的大小,您需要clone在本地进行搜索,并且只对存储库的最新版本感兴趣,而不关心历史中可能存在但不再存在的文件等,你当然可以限制clone到最新的版本,以避免克隆完整的回购和历史,使用--depth参数例如:

git clone --depth=1 https://github.com/Vincit/objection.js.git

这并不能避免必须克隆,但它确实减少了这样做所涉及的工作量/时间。


推荐阅读