Git恢复包索引文件

时间:2013-06-25 23:08:25

标签: git restore

我有一个带* .pack文件的git repo - 没有松散的对象。 出于某种原因,与问题无关,所有* .idx文件都将丢失。 我该如何恢复它们?

感谢

2 个答案:

答案 0 :(得分:5)

从树的顶部开始尝试运行:

git index-pack .git/objects/pack/PACK_FILENAME

其中PACK_FILENAME是您的包文件的名称。例如,我尝试过的存储库有路径:

.git/objects/pack/pack-7e0af787b3e455fac722264ff05dd0bae7d71625.pack

您应该为每个包文件执行此操作,并且您的存储库应该再次处于正常工作状态。

答案 1 :(得分:1)

注意:" git index-pack --stdin"需要访问现有的存储库, 但是" git index-pack file.pack"生成一个.idx文件 对应于packfile没有。

这意味着,从Git 2.12(2017年第一季度)开始,您甚至可以从Git仓库外部恢复idx文件,以进行测试。

commit 29401e1点击commit a3c45d1commit 7176a31commit de95302Jeff King (peff)(2016年12月16日)。 Junio C Hamano -- gitster --合并于commit 49d45de,2016年12月21日)

  

index-pack:不在存储库中时跳过冲突检查

     

您可以运行" git index-pack path/to/foo.pack"在...之外   存储库生成索引文件,或只是为了验证   内容。
  因此,进行碰撞检查毫无意义   我们显然没有任何物体可以碰撞。