5

我有一个带有 *.pack 文件的 git repo - 没有松散的对象。由于某种原因,与问题无关,所有 *.idx 文件都丢失了。我怎样才能恢复它们?

谢谢

4

2 回答 2

8

从树的顶部,尝试运行:

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

PACK_FILENAME您的包文件的名称在哪里。例如,我尝试过的存储库具有以下路径:

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

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

于 2013-06-25T23:55:20.107 回答
1

注意:“ 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 日)peffgitster

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

您可以在git index-pack path/to/foo.pack存储库之外运行“”来生成索引文件,或者只是为了验证内容。
进行碰撞检查是没有意义的,因为我们显然没有任何要碰撞的对象。

于 2016-12-28T20:39:54.547 回答