代码之家  ›  专栏  ›  技术社区  ›  Thảo M. Hoàng

Git解包对象后的源代码树在哪里?

git
  •  0
  • Thảo M. Hoàng  · 技术社区  · 6 年前

    我有Git源对象。

    $ tree .git
    .git
    ├── branches
    ├── config
    ├── description
    ├── HEAD
    ├── hooks
    │   ├── applypatch-msg.sample
    │   ├── commit-msg.sample
    │   ├── post-update.sample
    │   ├── pre-applypatch.sample
    │   ├── pre-commit.sample
    │   ├── prepare-commit-msg.sample
    │   ├── pre-rebase.sample
    │   └── update.sample
    ├── info
    │   └── exclude
    ├── objects
    │   ├── info
    │   │   └── packs
    │   └── pack
    │       ├── pack-8c58c09efcd6b2feb30685aca8e67801837860d3.idx
    │       └── pack-8c58c09efcd6b2feb30685aca8e67801837860d3.pack
    ├── packed-refs
    └── refs
        ├── heads
        └── tags
    

    解包对象文件后。

    $ git unpack-objects < .git/objects/pack/pack-8c58c09efcd6b2feb30685aca8e67801837860d3.pack
    
    Unpacking objects: 100% (16748/16748), done.
    

    进度已经完成,但我看不到源代码的工作树。

    解包对象后,源树将定位在哪里?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Jörg W Mittag    6 年前

    unpack-objects 不创建源树。它将对象数据库从 包文件 格式化为 松散物体 格式。

    松散的物体现在将进入 .git/objects/<first two nibbles of SHA-1 object ID in hexadecimal representation>/<remainder of SHA-1 object ID in hexadecimal representation>

    你想在这里实现什么还不太清楚。存储格式是完全透明的,所有命令都可以使用压缩格式或松散格式(或者两者的混合)。你从不 需要 显式打包或解包对象。你有时会 希望 显式打包对象数据库,因为packfile格式的存储效率更高。另一个方向几乎毫无意义。

        2
  •  0
  •   Thảo M. Hoàng    6 年前

    在这种情况下非常简单。只需输入 克隆 命令。

       $ git clone .git my_source_tree
         Cloning into 'my_source_tree'...
         done.