最近研究Git时,发现了一个奇怪的问题。
Git的每一条commit记录都应该对应当前仓库.git/objects目录下的一个Git对象(本质上是一个文件)。
例如:4e1951ba977e84d72c3c7f754b61b1c911f24aff这个SHA-1 hash对应的Git对象应该是objects目录的子目录4e下的名为1951ba977e84d72c3c7f754b61b1c911f24aff的文件。
但当这条记录是GitHub仓库的初始化commit时,却找不到对应的Git对象(甚至没有4e这个目录),同时这条提交的一切信息又可以通过git cat-file命令正常打印。详见下图。
是这条commit单独存储在其他地方了吗?
或者是有什么其他我不知道的细节?
本地初始化的Git仓库无此问题。
有关Git对象的更多信息可以参考此博客。

