没那么多
文件夹
丢失或损坏的是内部对象(commit
02d8c9217333d89afd61da1788fa82329b692610
在服务器上)引用另一个内部对象(
c168e82dd62c0cdbf3ea7c3be3a84218a12c8a03
)那东西不见了。当一些对象存储在单独的文件中时,其他对象则是
拥挤的:
一个文件中有数千个对象。
如果你有东西
c168e82dd62c0cdbf3ea7c3be3a84218a12c8a03型
您可以从自己的存储库中提取它,发送它,然后将它插入到另一个存储库中。然而,这通常比重新克隆
好的
存储库(前提是它拥有所有的东西不是每个克隆都是完整的,例如,它可能已经过时,或者它可能是
--single-branch
克隆)。
要提取一个对象,请首先查找其类型:
git cat-file -t c168e82dd62c0cdbf3ea7c3be3a84218a12c8a03
然后提取原始数据:
git cat-file -p c168e82dd62c0cdbf3ea7c3be3a84218a12c8a03 > /tmp/obj.data
复制对象数据并将其插入存储库:
scp /tmp/obj.data serverhost:/tmp/obj.data
ssh serverhost
cd ...
git hash-object -w -t $type /tmp/obj.data
在哪里?
$type
类型是否来自
git cat-file -t
在存储库的好拷贝的机器上。
(添加丢失的对象可能会修复所有问题,或者只会暴露更多问题,这也是通常最好用另一个克隆完全替换坏的存储库的另一个原因。)