git克隆后,对象目录没有对象

git克隆后,对象目录没有对象,git,github,git-clone,Git,Github,Git Clone,在我对远程存储库进行git克隆之后,为什么.git/objects目录没有任何以sha1哈希的前两个字符开头的对象及其父目录(尽管它有info和pack目录)。我只有在自己提交后才开始看到对象。在没有任何提交对象的情况下,git log如何在这种情况下工作?git可以将对象存储为松散对象,在这种情况下,它们会以第一个字节命名在其中一个目录中,或者作为包以特殊的压缩格式存储对象。当松散对象太多时,git gc将运行以自动打包它们 当您进行克隆时,服务器会在一个包中为您提供所需的所有对象,因此将此包

在我对远程存储库进行git克隆之后,为什么.git/objects目录没有任何以sha1哈希的前两个字符开头的对象及其父目录(尽管它有info和pack目录)。我只有在自己提交后才开始看到对象。在没有任何提交对象的情况下,git log如何在这种情况下工作?

git可以将对象存储为松散对象,在这种情况下,它们会以第一个字节命名在其中一个目录中,或者作为包以特殊的压缩格式存储对象。当松散对象太多时,
git gc
将运行以自动打包它们

当您进行克隆时,服务器会在一个包中为您提供所需的所有对象,因此将此包分解为松散对象(除非有非常小的数量)是没有意义的,因此Git不会,而只是将对象留在包中


当您创建新对象时,它们通常被写为松散对象,因为创建一个高效的包会有一些开销,并且只能作为
git gc

的一部分转换为包。git可以将对象存储为松散对象,在这种情况下,它们会以第一个字节命名在其中一个目录中,或者作为包,它以特殊的压缩格式存储对象。当松散对象太多时,
git gc
将运行以自动打包它们

当您进行克隆时,服务器会在一个包中为您提供所需的所有对象,因此将此包分解为松散对象(除非有非常小的数量)是没有意义的,因此Git不会,而只是将对象留在包中

在创建新对象时,它们通常作为松散对象写入,因为创建一个高效的包会有一些开销,并且只能作为
git gc
的一部分转换为包

在没有任何提交对象的情况下,
git log
如何在这种情况下工作

您正在查找的内容(位于objects目录中的哈希名称下的内容)是未打包的blob。但是,
git log
不需要这些。它需要的是描述树和blob的信息,这就是info目录的用途

但是,在git clone时间,也没有任何信息内容。相反,
git log
在包索引中查找。你也可以!对pack.idx文件运行
git verify pack-v
,您会看到一个所有blob和树的列表,这足以让
git log
回答您的查询

在没有任何提交对象的情况下,
git log
如何在这种情况下工作

您正在查找的内容(位于objects目录中的哈希名称下的内容)是未打包的blob。但是,
git log
不需要这些。它需要的是描述树和blob的信息,这就是info目录的用途

但是,在git clone时间,也没有任何信息内容。相反,
git log
在包索引中查找。你也可以!对pack.idx文件运行
git verify pack-v
,您会看到一个所有blob和树的列表,这足以让
git log
回答您的查询