🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
* 本场景命令: **git add . **; **git commit -m “first commit”** ![](https://box.kancloud.cn/2015-12-28_5680dc60dcfc0.png) * * * * 那么在这些git对象和引用种到底存储了什么内容,他们怎样组织起来的呢??? * 如下图所示,引用HEAD文件中存的是当前branch的路径,默认为master * 如下图所示,而分支master文件中存的是一个SHA-1值,该值是一个commit对象的key,意为分支master当前指向该特定commit * 如下图所示,若找到对应master里存储的那个commit后我们看到该文件里存了若干信息,主要包括上一个commit对象的key,一些git对象的类型与key值,本次提交信息,提交者的信息与提交时间 * 如下图所示,一个tree对象里存储的是一个或多个blob 对象的key,对应到仓库里则意味着该目录下现在这几个文件 * 如下图所示,一个blob对象里存储的就是真实的文件内容啦 现在你能理解为什么主人公第一次commit后的git图如上所示了吧 ![](https://box.kancloud.cn/2015-12-28_5680dc610f9d9.png) * * * >   > > Git 是一个内容寻址文件系统。 看起来很酷, 但这是什么意思呢? 这意味着,Git 的核心部分是一个简单的键值对数据库(key-value data store)。 ![](https://box.kancloud.cn/2015-12-28_5680dc614e703.png) * * * * 第二次commit,主人公更改了status.txt的内容味’fall in love’,新增了girl_friend目录及name.txt文件 * 第二次git结构图如下所示,图中所示的git对象都存在于objects目录下,只是那些灰色的对象并不链在当前branch的当前状态上了