GIT LFS:从整个存储库中获取完整列表

GIT LFS: Get the complete list from the whole repository

我只找到了 git lfs ls-files 但这个命令只给出了来自特定参考文献的列表。

有没有办法从 GIT 存储库中获取整个 LFS 对象列表?

"git lfs ls-files" 命令无法按照您想要的方式列出存储库的所有 LFS 对象。该命令需要列出 LFS 对象以供特定参考。如果您记得每个引用都代表存储库历史记录的快照,就很容易理解为什么它不能这样做。 "git ls-files" 命令会发生相同的行为,您不能同时列出所有存储库修订(提交)的所有文件。

如果您有权访问 git LFS 服务器,则可以查看 lfs/objects 文件夹。它应该包含一个文件夹结构,其工作方式类似于存储对象的搜索树。在某种程度上(也许第三?)是对象本身。

我刚刚转换为 git(和 git lfs)来测试它的一个小项目的小示例如下所示:

$ ls lfs/objects/*/*
lfs/objects/9f/ef:
9fef0fcd855a78effd175cdf5a49a14b57334b40f1ad0c75317d6cbc0bb29595

lfs/objects/a5/f2:
a5f207bf721d3cbf62d298b6e2c9fa7cbdb3e37c7f44590a6c8be76560d7b9d7

lfs/objects/ca/63:
ca631009296d9de54dde2f70fec997aa0b22f624ed8f6fecc763c684317ba825

在我的例子中,它位于 .git 文件夹中。我还没有将它推送到 git LFS 服务器,但我认为那里的结构是相同的。这应该(据我所知)为您提供存储在 git LFS.

中的所有文件的所有哈希值(作为文件名)

注意:我基于对 git LFS 的试验并注意到发生了什么。不是来自对 git LFS 背后的存储系统如何工作的任何更深入的理解。

我在 GIT LFS Github 上添加了一个问题:https://github.com/git-lfs/git-lfs/issues/2575

您可以在 Git LFS v2.4.0 及更高版本 中使用 --all 标志

git lfs ls-files --all

您可以在 this pull request 中阅读更多相关信息。