从git仓库中删除丢失的LFS对象

Nep*_*oxx 6 git gitlab git-lfs

我在客户端和服务器上的git仓库*中都缺少一堆LFS对象。我知道这些对象丢失了,没关系。不幸的是,这意味着git lfs fetch --all甚至git lfs push --all origin将失败。

我想通过使用虚拟文本文件替换二进制文件或完全删除指针来清除存储库中的“损坏的指针”。我也知道这涉及到重写历史记录,这也很好。

最好的进行方法是什么?

*为了澄清,我丢失了服务器上的一些 LFS文件,但不是全部,也不是这些文件的所有修订版。

例如,我已经在3次提交中对foo.png进行了修改:

  • foo.png(版本1,LFS Sha:03cfd743)
  • foo.png(版本2,LFS Sha:661f0797)
  • foo.png(Version 3,LFS Sha:5fa2f122)

LFS服务器不再具有foo.png版本2,因此我想从历史记录中删除该提交。不幸的是,git lfs不会告诉我哪个提交被破坏了,只是告诉我661f0797丢失了。

(记录下来,我发现了丢失的文件,所以我不再有这个问题,但是解决方案应该仍然很有趣!)

A.H*_*DAR -4

您是否尝试过简单的(建议在使用以下命令之前进行备份):

rm -f .git/index
git reset
Run Code Online (Sandbox Code Playgroud)

  • 那到底有什么作用呢? (2认同)