我有一个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.
进度已经完成,但是我看不到源代码的工作树。
解包对象后,源树将位于何处?
答案 0 :(得分:2)
unpack-objects
不会创建源树。它将对象数据库从 packfile 格式解压缩为松散对象格式。
现在,松散的对象将位于.git/objects/<first two nibbles of SHA-1 object ID in hexadecimal representation>/<remainder of SHA-1 object ID in hexadecimal representation>
目前尚不清楚您想要实现什么。存储格式是完全透明的,所有命令都可以使用打包格式或松散格式(或两者兼而有之)。您从不需要 显式打包或解压缩对象。有时您可能想要显式打包对象数据库,因为packfile格式存储效率更高。另一个方向几乎没有任何意义。
答案 1 :(得分:0)
在这种情况下非常简单。只需输入 克隆 命令。
$ git clone .git my_source_tree
Cloning into 'my_source_tree'...
done.