git在创建目标目录之前将其对象存储在何处

时间:2017-05-09 23:16:30

标签: git

我使用以下命令克隆了一个git repo,但在收到所有对象之前中断了克隆。当我打断克隆时,新的目录(' some-project')还没有创建,但是,git告诉我,我收到了100 + mb的数据。如果我让克隆完成,那么数据就会出现在某个项目中。但是因为有些项目' dir从未创建过,数据在哪里?

git clone https://git.somehost.org/some-project.git

Cloning into 'some-project'...
remote: Counting objects: 5646714, done.
remote: Compressing objects: 100% (593005/593005), done.
^Cceiving objects:   9% (510470/5646714), 106.60 MiB | 739.00 KiB/s 

2 个答案:

答案 0 :(得分:2)

Git创建克隆目标并随时将文件放入其中。如果你中断了克隆过程,Git会删除克隆目标,并带有文件。

答案 1 :(得分:1)

Git以“对象”的形式存储所有内容。那些位于本地存储库中的.git/objects下。在正常使用中,这些对象是文件内容(“blob”),目录列表(“树”),提交,签名标签和各种小事。

您下载的所有内容也都在那里。

事实上,您可以在下载时观看它。抓取任何非常大的存储库(例如,Rails或其他),在下载时,列出新存储库中的所有文件ls -lR rails)。

你会找到这样的文件:

.git/objects/pack/tmp_pack_9UcqDb

“pack”只是在一个较大的文件中打包的一堆git对象,用于压缩/存储优化。

当您按^ C时,git谢天谢地删除它创建的新目录。