Git工作原理_01
Git是一种 分布式版本控制系统(Distributed Version Control System, DVCS),其客户端会将代码仓库完整地镜像下来,其好处是任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
Git有三种状态:已修改(modified)、已暂存(staged) 和 已提交(committed)。
-
已修改(modified):修改了文件,但还没保存到数据库中。
-
已暂存(staged):对一个已修改文件做了标记,使之包含在下次提交的快照中。
-
已提交(committed):数据已经安全的保存在本地数据库中。
由此引入 Git 项目的三个工作区域的概念:工作目录、暂存区域 以及 Git仓库。
基本的 Git 工作流程如下:
-
在工作目录中修改文件。
-
暂存文件,将文件的快照放入暂存区域。
-
提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
举个例子,比如我在超市买东西,选了以下几样物品(五枚鸡蛋,三个番茄,两头蒜和一块姜),然后将其放进塑料袋里,系好后放入购物车里面;接下来我推着购物车去了称重区,负责称重的阿姨将装着东西的塑料袋从购物车里拿出来,然后又将里面的东西全部取出来逐一称重,我忽然感觉蒜买的有点多了,于是让阿姨去掉一头蒜,现在全部东西都称好了,阿姨把这些物品(五枚鸡蛋,三个番茄,一头蒜和一块姜)放入塑料袋后系好并贴上总价标签,最后放回了购物车中。
OK,我们接下来捋一捋:购物车 就相当于 本地Git仓库,贴了总价标签的塑料袋 就相当于 暂存区,称重区 就相当于 工作目录;阿姨从购物车里将物品拿出来的过程,相当于 Checkout the project 的过程,我选择 去掉一头蒜之后 ,相当于处于 已修改状态,阿姨将物品 装进塑料袋并贴好标签之后,即生成了 下次提交的快照 ,相当于 已暂存,放回购物车之后,相当于已提交。