【问题标题】:How to unpack all objects of a git repository?如何解压 git 存储库的所有对象?
【发布时间】:2013-06-03 01:09:26
【问题描述】:

如何解压缩包文件的所有对象?

我刚刚克隆了一个远程仓库,所以我的本地仓库目前不包含任何松散的对象,只有一个 .pack 和一个 .idx 文件。

我尝试运行git unpack-objects < .git/objects/pack/pack-.pack,但没有任何反应。

我做错了什么?有没有其他命令可以做到这一点?

【问题讨论】:

    标签: git unpack


    【解决方案1】:

    在使用该命令之前,您需要将包对象移出.git/objects/pack 目录。但是,包文件需要在存储库中。

    例如,在项目的根目录中创建一个目录名称SAMPLE。然后,将包文件移动到SAMPLE 目录。之后,在没有包文件的存储库中,使用命令

    git unpack-objects < SAMPLE/*.pack
    

    Git 将在您的存储库的.git/objects 目录中生成所有对象。

    【讨论】:

    • Hacky,但有效。这样做的原因是git unpack-objects 不会在 repo 中创建对象,并且看到包文件在 repo 中它什么都不做。这在get help unpack-objects 中有非常清楚的解释。
    • 谢谢,只有一件事 - 包文件不需要在 repo 中
    • 我还要补充一点,有一个文件.git/objects/info/packs 似乎列出了.git/objects/packs 下可用的包文件。还有文件.git/packed-refs,其中包含可通过包文件获得的参考(头、标签)列表。我不确定删除包文件后如何处理它们——可能需要删除它们,可能是git fsck 会处理它们——我不知道。只是为了以防万一...
    • @WilsonF 您有多个或没有包文件(可能有多个)。您需要为每个 .pack 文件实际运行一次命令,并指定其实际文件名(不过,您可以使用制表符完成)
    • @WilsonF 您也可以运行像for file in $(ls SAMPLE/); do git unpack-objects &lt; SAMPLE/$file; done 这样的简单命令来实现您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多