Git(1)-结构分析(工作区、暂存区、分支、主干)
2019-10-30 本文已影响0人
小胖学编程
以idea为例,各个区特点如下图所示:
idea不同文件以及颜色区别.png
- 工作区:创建了文件,但未add操作,此时文件为红色;
- 暂存区:对文件进行add操作,但未commit,此时文件为绿色;
- 本地分支/主干:对文件进行commit,此时文件为白色;
- 远程分支/主干:对文件进行push,此时文件上传到远程版本库;
1. 概念
git的难点便在于工作区、暂存区、本地分支/主干似乎使用的是一套代码。
maven各个区概念以及常用的命令.png
工作区:实际上就是你所看到的代码目录。
工作区目录.png
暂存区(缓存区):一般存放在
.git(工作区的隐藏)目录下的index文件中,所以暂存区也叫索引(index)。
暂存区索引.png
本地版本库:在
.git目录下.git\refs\heads。
版本库.png
image.png
2. 分支创建
- Git每次提交,都会将其串成一条时间线。分支/主干都是这条时间线上的指针,header指针指向当前分支。当前分支是master时,所有header指向master分支。
image.png
- 用户使用
git checkout -b dev命令创建并切换到dev分支。此时我们可以修改和提交dev分支上的内容,故header指针指向dev分支。
Git创建分支是非常快的,因为只是增加了一个dev指针,并且改变header指针的执指向。在《1. 概念》中,版本分支/主干文件都是1KB大小的,也可以印证这一观点。
image.png
- 用户在dev分支上提交。
此时dev分支是最新版的内容,这也就是为什么我们切换到master分支上时,看不到dev分支上提交的内容。
image.png
- dev分支合并master主干分支。
Git合并主干也是非常快的,就是将master指针指向dev指针处。
image.png
- 删除dev分支
删除dev分支,实际上就是删除dev指针。
image.png