Git和其他版本控制系统不一样的地方就在于有暂存区的概念。
工作区就是在电脑中能看到的目录,我们常常说的本地版本库并不是工作区,而是工作区中的.git隐藏目录。
版本库中存放了很多东西,其中最重要的就是成为stage的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。
我们在执行git init命令后就新建了一个仓库,生成了一个.git的文件夹,这个文件夹就是git最核心的内容。我们进入.git文件夹来看一看里面的内容:
HEAD
这个HEAD是个文本文件,可以打开:
系统指出这个HEAD是个引用,这个HEAD指向我们当前工作在哪个分支上。
config
这里存放了配置信息,和本地仓库相关的配置信息都在这里面。
refs
这是个文件夹,里面有两个文件目录,分别为heads和tags。
-
tags是标签,每当项目开发到一定程度,已经有一定成果后,我们可以打一个tag,来标识一下。
-
heads存放我们的分支,分支就是独立的开发空间,在彼此的分支里开发的时候互不影响,当需要集成的时候又可以把所有分支集成到一个公共的分支里。主分支是master。
objects
这里面有两种类型的文件夹,一种是两个字符的文件,一种是4个字符的文件。
pack文件夹里是一些打包的内容,git里面如果松散的文件太多了,会有个自我梳理的过程,进行打包,打包后的文件放入pack
随机打开一个两字符的文件,可以看到一串字符串。
我们把文件名字和字符串拼接在一起,查看文件的类型:
git cat-file -t 文件名
可以发现是个tree。
我们在看看tree的内容:
git cat-file -p 文件名
可以发现一个blob类型文件