我可以只克隆 Git 存储库中大小低于指定限制的文件吗?

Can I clone only files in a Git repository whose sizes are below a specified limit?

我的任务是扫描内部 Git 存储库中的敏感信息(或不应 public 的信息)。

我的主要问题是一些开发人员已将大 blob (+100 MB) 提交到他们的 Git 存储库,这需要很长时间才能下载并且在扫描时被忽略。

有什么方法可以让 Git 只克隆大小低于指定限制的文件?如果没有,是否有更好的方法来扫描 Git 存储库中的敏感信息?

是的,这可以通过称为部分克隆的新功能实现。您可以在克隆时指定一个过滤器,Git 将根据该过滤器限制它获取的数据量。

例如,您可以执行以下操作,这将克隆 Git 存储库而不包含任何大于 100 MiB 的 blob:

git clone --filter=blob:limit=100m https://github.com/git/git.git

请注意,要执行此操作,您应该使用可用的最新版本 Git (2.26.2),并且您还需要有合适的服务器端实现。 GitHub 确实支持此功能,但其他服务器实现可能会也可能不会。

请注意,尽管 GitHub 确实支持部分克隆,但出于效率原因,它会限制可用的过滤器。不过,应该支持按大小限制 blob。