【问题标题】:Git restore pack index fileGit恢复包索引文件
【发布时间】:2013-06-25 23:08:24
【问题描述】:

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

谢谢

【问题讨论】:

  • 你试过git-repack吗?

标签: git restore


【解决方案1】:

从树的顶部尝试运行:

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

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

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

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

【讨论】:

  • 知道是什么原因造成的吗?
  • @Nepoxx 很遗憾,没有。这可能取决于事物的托管方式,或者机器上的某些东西正在以某种方式“清理”文件。我个人从未见过这个问题,也很少听说过它。 :-(
  • 不得不这样做几次。认为它不起作用 - 观察了哈希值,显然有多个 .idx 文件丢失。 ls -l .git/objects/pack 有助于显示哪些 .pack 文件缺少随附的 .idx 文件。
【解决方案2】:

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

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

commit 29401e1commit a3c45d1commit 7176a31commit de95302(2016 年 12 月 16 日)Jeff King (peff)(2016 年 12 月 21 日在 commit 49d45de 中由 Junio C Hamano -- gitster -- 合并)

index-pack:不在存储库中时跳过碰撞检查

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2019-03-09
    • 2014-05-28
    • 2012-06-02
    • 2020-07-09
    相关资源
    最近更新 更多