我正在尝试推动提交。但我不断收到错误消息:
error: GH008: Your push referenced at least 1 unknown Git LFS object
它所质疑的文件是:
(missing) SRP/com.unity.shadergraph/.data/texture_2d_lod_node.PNG (b262d71d68d478f6b6c3dc3086451a764e065b8608a65104e17cb8aefefa5f76)
现在我转到该文件夹,该文件确实存在:
所以我的问题是为什么它一直给我这个错误?
当您从一个远程存储库迁移到另一个远程存储库时,可能会发生这种情况。假设旧存储库名为
old-origin
,
git lfs fetch --all old-origin
git lfs push --all origin
应该同步 git 提交历史记录中的所有 LFS 对象。
LFS 对象存储中似乎缺少该对象。 LFS 对象位于 .git/lfs/objects。如果您丢失的对象在那里,它将位于像 b2/62/d71d68 这样的路径...
git-lfs 在暂存文件之前运行 clean 过滤器时会添加对象。假设丢失的对象是文件的最新版本,您可以使用如下命令强制清理过滤器重新运行:
git add --renormalize path/to/file
该错误意味着您的 Git 推送包含对从未上传到服务器的 Git LFS 对象的引用。
尝试运行
git lfs push origin --all
上传所有本地 Git LFS 对象。之后 git push
应该可以工作。
背景:
Git LFS 的工作原理是将大文件存储在 Git 存储库外部的数据存储中。然后,只能通过 Git 存储库中所谓的 Git LFS 指针文件来引用单独存储的文件(您可以在Git LFS 101中了解更多信息)。如果 Git LFS 用户有“本地客户端配置错误”,则可能会出现 LFS 文件被添加并在本地引用但未上传到 LFS 数据存储的情况。因此,存储库的任何其他用户将无法下载引用的 LFS 文件,并且存储库将陷入损坏状态。 error: GH008: Your push referenced at least 1 unknown Git LFS object
可以保护用户免受这种情况的影响。