我有一个带有 *.pack 文件的 git repo - 没有松散的对象。由于某种原因,与问题无关,所有 *.idx 文件都丢失了。我怎样才能恢复它们?
谢谢
从树的顶部,尝试运行:
git index-pack .git/objects/pack/PACK_FILENAME
PACK_FILENAME
您的包文件的名称在哪里。例如,我尝试过的存储库具有以下路径:
.git/objects/pack/pack-7e0af787b3e455fac722264ff05dd0bae7d71625.pack
您应该为每个包文件执行此操作,并且您的存储库应该再次处于工作状态。
注意:“ git index-pack --stdin
”需要访问现有存储库,但“ git index-pack file.pack
”生成与.idx
包文件对应的文件则不需要。
这意味着,从 Git 2.12(2017 年第一季度)开始,您甚至可以idx
从 Git 存储库外部恢复文件,以进行测试。
请参阅Jeff King ( )的提交 29401e1、提交 a3c45d1、提交 7176a31、提交 de95302(2016 年 12 月 16 日) 。
(由Junio C Hamano 合并——在提交 49d45de中,2016 年 12 月 21 日)peff
gitster
index-pack:不在存储库中时跳过冲突检查
您可以在
git index-pack path/to/foo.pack
存储库之外运行“”来生成索引文件,或者只是为了验证内容。
进行碰撞检查是没有意义的,因为我们显然没有任何要碰撞的对象。