我只找到了
git lfs ls-files
,但此命令仅给出来自特定参考的列表。
有办法从 Git 存储库获取 LFS 对象的完整列表吗?
如果您有权访问 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 ls-files”命令无法按照您想要的方式列出存储库的所有 LFS 对象。该命令需要列出 LFS 对象以供特定参考。如果您还记得每个引用都代表存储库历史记录的快照,那么就很容易理解为什么它不能这样做。 “git ls-files”命令也会发生相同的行为,您无法同时列出所有存储库修订(提交)的所有文件。