Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个git LFS损坏的文件错误意味着什么?如何修复它?_Git_Github_Git Lfs - Fatal编程技术网

这个git LFS损坏的文件错误意味着什么?如何修复它?

这个git LFS损坏的文件错误意味着什么?如何修复它?,git,github,git-lfs,Git,Github,Git Lfs,我不知道为什么,但我的回购协议有点搞砸了,当我试图将我的分支机构推到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

我不知道为什么,但我的回购协议有点搞砸了,当我试图将我的分支机构推到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
,但运气不好,我无法推进我的分支


如何修复此问题?

修复损坏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 

我不使用git lfs,因此不确定细节,但似乎在这种情况下,重写历史(
git-rebase-I
git-filter-branch
)是正确的方法。显然,使用丢失文件的提交还没有被发送到上游:如果是这样的话,您在这里就不会看到失败。因此,重写历史以修改或放弃丢失文件的提交,以及依赖于该提交的任何进一步提交,都可以解决该问题。但是,再一次,我不使用git lfs。