[英]Are the 'pack' files essential to a bare git repository?
我在 Raspberry Pi 的 SD 卡上有几个裸 git 存储库。 当我复制 repos 时,读取包文件时出错,如repo.git/objects/pack/pack-123abc.pack
。 有趣的是,只有几个 repos 的包文件受到影响。 错误是在访问这些文件时,Raspberry Pi 崩溃了。 我认为这些文件已经一去不复返了,除非有人知道我如何恢复它们?
无论如何,我在没有包文件的情况下从 SD 卡复制了存储库(实际上没有整个包/文件夹)。 毫不奇怪,当我尝试克隆存储库时出现错误:
git clone git/repo.git/
Cloning into 'repo'...
done.
fatal: unable to read tree 541c6fc258f6bd724e4a1f3aad43f8c23dcdb644
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
我还有机会从这些存储库中提取任何内容吗?
是的,包文件是必不可少的。 当存储库中存在许多松散对象时,它们会被打包到一个包文件中,这比处理许多松散对象更小、更快。 因此,在许多情况下,packfile 可能是存储库中 Git 对象的唯一来源。
如果您在其他地方有这些存储库的副本,您可以尝试将这些存储库中的.pack
和.idx
文件复制到损坏的存储库中,然后运行git fsck
以查看是否所有对象都在那里。 如果您没有这些对象的其他来源,那么您几乎肯定会丢失数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.