LFS上传丢失对象但文件已存在

9
我正在尝试推送一个提交,但是一直收到一个错误提示:
error: GH008: Your push referenced at least 1 unknown Git LFS object

它询问的文件是:
 (missing) SRP/com.unity.shadergraph/.data/texture_2d_lod_node.PNG (b262d71d68d478f6b6c3dc3086451a764e065b8608a65104e17cb8aefefa5f76)

现在我进入了这个文件夹,那个文件确实存在: 文件夹/文件截图 所以我的问题是为什么它始终给我这个错误?
3个回答

24
这可能发生在你从一个远程仓库迁移到另一个仓库的过程中。假设旧仓库的名称是old-origin
git lfs fetch --all old-origin
git lfs push --all origin

应该同步您的git提交历史中的所有LFS对象。

谢谢,这解决了我的问题。我的情况是将旧仓库移动到新仓库。 - Javad Norouzi
这节省了很多烦恼!谢谢你!! - aksg87
你写 git lfs fetch <opt> <arg> 然后又写 git lfs push <arg> <opt>,这样做有什么原因吗?(将 arg-opt 的顺序与 opt-arg 进行了交换) - Groostav
@Groostav 没有头绪!它应该可以双向工作。我会进行修正,以免造成困惑。 - undefined

7

看起来对象在LFS对象存储中丢失了。 LFS对象位于.git / lfs / objects处。如果您丢失的对象在那里,它将位于类似b2/62/d71d68...的路径下。

运行清洗过滤器以暂存文件时,git-lfs会添加对象。假设缺失的对象是文件的最新版本,则可以使用以下命令强制重新运行清洗过滤器:

git add --renormalize path/to/file

非常感谢!这解决了我放弃希望时遇到的问题。 - Mostafa Abdulrazic
非常感谢,我不知道--renormalize可以恢复LFS对象..... - mopodafordeya

3
那个错误意味着你的 Git push 包含对一个从未上传到服务器的 Git LFS 对象的引用。
尝试运行 git lfs push origin --all 以上传所有本地 Git LFS 对象。之后,git push 应该可以正常工作。
背景:Git LFS 的工作原理是将大文件存储在 Git 存储库之外的数据存储中。这些单独存储的文件只通过所谓的 Git LFS 指针文件在 Git 存储库中引用(你可以在Git LFS 101中了解更多)。如果 Git LFS 用户的本地客户端配置错误,则可能会发生添加并在本地引用 LFS 文件但未将其上传到 LFS 数据存储的情况。因此,存储库的任何其他用户都无法下载引用的 LFS 文件,存储库将处于损坏状态。错误:error: GH008: Your push referenced at least 1 unknown Git LFS object 保护用户免受这种情况的影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接