Git原理 — 1、Git目录结构及Git三棵树(工作区、暂存区、版本库)
1. Git目录结构
* hooks (钩子函数的一个库 类似于回调函数)
* info (包含一个全局性的排除文件)
* objects (目录存储所有数据内容)
* refs (目录存储指向数据(分支)的提交对象的指针)
* config (文件包含项目特有的配置选项)
* description (显示对仓库的描述信息)
* HEAD (文件目前被检出的分支)
* logs (日志信息)
* index (文件保存暂存区的信息)
2. 三个区的位置
我们先来理解下Git 工作区、暂存区和版本库概念,这对以后我们学习Git命令会有非常大的帮助。
2.1. 工作区
一般我们执行git init
或者git clone
命令,就能把一个目录初始化成Git本地版本库。
而这个目录就是该Git本地版本库的工作区。
如下图:gittest
目录就是一个本地仓库。
具体结构如下图:
2.2. 暂存区
- 暂存区从字面上去理解就是用来暂时保存文件的地方,实际上它的作用和它的名字是一致的,暂存区可以起到过渡的作用,当我们写代码修改了一些文件的时候,可以把修改的代码提交到暂存区保存,然后接着写代码,接着再提交到暂存区保存,写完某些代码觉得没什么可以修改的时候,可以将暂存区里面的文件一次性提交到版本库。
- 暂存区英文叫
stage
,或index
。 - 暂存区是包含在版本库中的,一般存放在
.git
目录下的index文件
(.git/index
)中,所以我们把暂存区有时也叫作索引(index
)。
暂存区位置如下图:
2.3. 版本库
版本库:工作区(项目根目录)有一个隐藏目录.git
就是版本库,包括索引树(index文件)
和本地版本库(objects目录)
,而该目录不算工作区。
具体结构如下图:
说明:
版本库又存在两个很重要的区域:暂存区与分支区。
分支区:该区域中可以包含很多分支,而每个分支都可以记录当前工作区中文件状态的快照。
如下图:
即:分支区.git/objects
就相当于本地版本库。
3. 三个区的关系
1)工作区新加文件 index.html
2)将index.html提交到暂存区
3)将暂存区内的内容提交到版本库
4)将本地版本推送到远程仓库上
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Taylor!
评论