繁体   English   中英

'pack' 文件对于裸 git 存储库是否必不可少?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM