本图展示了Git工作过程中的相关变化(请忽略WPS水印…),我们可以发现此处将Git的工作区块划分成了左右两部分,我们称为Git存储库(Git repository)和远程存储库(Remote repository)。接下来我们将具体进行介绍Git存储库:
Git存储库
1.本地CMDB(.git directory)
我们在建立本地git仓库的时候可以发现,文件目录中会生成一个.git的文件夹(如果你看不到的话,请打开查看隐藏文件的选项),这个文件夹就是Git创建的本地CMDB。
CMDB:配置管理数据库 ,存储软件的各配置项随时间发生变化的信息+基线(系统规约、软件需求、设计规约、源代码、测试计划/流程/数据、操作系统)
2.工作目录(Working directory)
本地文件系统,其实就是我们工作的那个文件夹,我们的整个项目都在这个文件夹中,如果我们要上传到GitHub中去,那么这个文件夹是什么样子的,我们在GitHub上看见的就是什么样子的。
3.暂存区(Staging area)
顾名思义,暂存区的意思就是暂时存储我们工作区中的文件,一般来说我们使用git add * 命令后就会将文件加入到暂存区中,换句话说,其作用就是隔离工作目录和Git仓库。
每个文件都属于以下几种状态:
-已修改:工作区的文件与暂存区的文件不同 -已暂存:修改了的文件已经加载到暂存区 -已提交:已经跟本地库中的文件相同了 (还没有push到远程仓库)
Git对象图
对象图(Object graph)是Git中重要的概念,Git的操作都是对一个图的操作,这张图保存所有文件的版本和所有描述变化的日志。这张对象图存储在仓库的.git目录中,从另一台机器/服务器中复制Git项目意味着复制整个对象图。
对象图是一个有向无环图(DAG),版本之间的演化关系图,一条边A->B表征了“在版本B的基础上作出变化,形成了版本A”。即从儿子指向父亲。
我们称对象图中的一个结点为Commit,每个结点都代表一个版本,当一个Commit指向两个父亲的时候就证明当前版本是曾经版本的合并;当多个Commit指向同一个父亲的时候就证明当前版本是曾经版本的分支。HEAD指向当前分支,该分支指向当前的commit。
对象图的好处在于,每个版本都只存储一次,允许一个版本共享同一个版本副本,这就减少了空间的浪费。下图展示了传统的版本控制系统和Git的差异:
除此之外,Git还允许分支管理和协作开发等。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93845 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!