ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
* 本场景命令: **git init** ![](https://box.kancloud.cn/2015-12-28_5680dc6075a07.png) * * * * 在本场景中, 主人公新建了 `status.txt` 文件, `git add .` 后 objects 目录下多出一个文件,随后提交第一个commit,objects目录又多出两个文件.那么这多出的三个文件到底用来干什么呢??? * 其实这三个文件都是git对象,分别对应三种git数据模型 **blob**,**tree**,**commit**,其实还有第四种对象 **tag**. * **blob** 对应我们仓库里的普通**文件**,当你将一份文件add到仓库里时,git将会为你产生一个blob对象存于objects目录下. * **tree** 对应我们仓库里的一个**目录**,当你做一次commit时,git将会为你新增的目录产生tree对象存于objects目录下. * **commit** 对应我们的一次**提交行为**,当你做一次commit时,git将会为你产生tree对象(若有新目录)的同时产生commit对象,存于objects目录下. * 可以利用 `cat-file -t SHA-1-of-one-object` 查看一个对象的数据类型, SHA-1-of-one-object 的值为你看到一个objects下新增的文件的子目录+文件名 * 第一次提交后git的对象(blog,tree,commit)和引用(head,branch)间的关系组织如下图,图中已表明每一个对象和引用分别对应的事物