这个 git-LFS 文件损坏错误是什么意思,如何修复?

4

我不确定是什么原因,但我的存储库似乎有点出了问题,当我尝试将我的分支推送到Github时,我会收到一个错误消息:

> git push
Git LFS: (0 of 1 files) 0 B / 61.99 MB
LFS upload failed:
  (missing) path/to/bigfile (50...4b)
error: failed to push some refs to 'git@github.com:me/myproject'

> git-lfs ls-files
50.. - path/to/bigfile

>  git-lfs fsck
Object path/to/bigfile (50...4b) could not be checked: no such file or directory
Object path/to/bigfile (50...4b) could not be checked: no such file or directory
Moving corrupt objects to /Users/myname/.../.git/lfs/bad
rename /Users/myname/.../.git/lfs/objects/50/b6/50...4b 
/Users/myname/.../.git/lfs/bad/50...4b: no such file or directory  

请注意,我并不关心删除或删除此文件,因为它不再使用(但该文件仍在那里!) 我已尝试git-lfs untrack path/to/bigfile,但没有成功,并且无法推送我的分支。 如何解决这个问题?

1
我不使用git-lfs,因此不确定细节,但看起来这是需要重写历史记录(git rebase -igit filter-branch)的情况。使用缺失文件的提交显然还没有被发送到上游:如果已经发送,则不会在此处看到失败。 因此,重写历史以修改或丢弃具有缺失文件的提交以及任何依赖于该提交的进一步提交将解决该问题。 但是,再次强调,我不使用git-lfs。 - torek
1个回答

3

修复损坏的LFS文件而不重写历史记录的步骤:

# set origin to original repo
git remote set-url origin ssh://git@bitbucket.nl.xxx:7999/prod/A.git
git lfs update

# fetch lfs data from original repo
git lfs fetch --all origin

# set origin back to new repo
git remote set-url origin ssh://git@bitbucket.nl.xxx:7999/prod/B.git
git lfs update 

# get missing lfs data from new repo
git lfs fetch --all origin

# push missing lfs data in new repo
git lfs push –all origin

# final check
git clone ssh://git@bitbucket.nl.xxx:7999/prod/B.git
git lfs fetch --all origin
git lfs fsck 

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