git仓库的组成
git仓库就是代码仓库的意思,不一定就存代码,就存放代码或者文件的地方。
英文单词是Repository.
git由什么对象组成的?
git系统由三种对象组成,分别是
(1)提交(commit)
(2)树(tree)
(3)原文(blob)
根据三者之间的关系进行各个概念的讲解。
先看一张图
git的每一次提交是一个commit对象,这个对象中又包括这几个内容:
tree对象:真正记录文件改变的记录,是tree的地址,指向真正的记录地址
author:文件的创建者,第一次是放在仓库的
commiter:就是这次是谁提交的
comment:这次提交的注释
tree对象记录了这次提交的记录,每一个文件代表一个blob,指向一个文件地址。
tree里面还可以包括tree对象,就像目录似的还有子目录。
上面这就是一次提交的commit操作的结果。是不是关系也搞懂了,概念也搞懂了。
每次提交git都会生成一个快照(snapshot),每提交一次生成一个快照,这次的快照是上次的快照基础上生成的。
请看下图
一共提交了三次,生成了三次快照,这次快照将会完整的保存下来。每次快照都是在上一次快照的基础上生成的,第一次入仓库时也会提供一个快照。
这些生成的一个链条,就可以理解为一个分支。分支将会再下个博客中讲解。
git仓库存放在哪呢?就是在当前工作目录的.git文件夹下。
.git/objects 存放所有的对象
.git/heads 存放的所有分支,这里仅仅是一个引用,每个引用引用的都是该分支最后一次提交的记录。
.git/refs/tags 所有的tag,方便以后查看的标签
.git/logs/HEAD HEAD的历史变化
.git/refs/heads 除了master分支之外的其他分支HEAD的变化历史