2011-03-03 129 views
1

我最近很兴奋地了解一下Git如何存储它的对象:即,如果你正在寻找一个散列值为0f9f33986446bd8e832dac72177295bb75d3ec90的提交(或树或博客),你会发现它在你的.git目录中项目,在objects/0f/9f33986446bd8e832dac72177295bb75d3ec90下。换句话说,散列的前两个字母是子目录,其余的是文件名。Git的包文件存储在哪里?

看看存储是如何完成的,但后来我阅读了关于Git Community Book中的包文件。

我是否正确理解链接 - 它们是否不存储在相同的目录结构下?如果没有,他们确切地存储在哪里?

回答

2

根据./objects/pack(您可能不得不烧掉git gc)。包装材料遵循相当整齐的启发式方法,倾向于在实践中收拾好东西。您可以快速搜索包:

cd ${PROJECT}/.git && find . | grep pack 
+0

为什么使用该命令搜索包,如果他们都在.git /对象/包?为什么不只是'ls $ {PROJECT}/.git/objects/pack'? – MatrixFrog 2011-03-03 18:48:50

+0

你是完全正确的,如果你不知道他们住在哪里,那么它就更像是一个暗示,如何抓住包装。 – 2011-03-03 19:53:08