Git 学习札记(一)相关概念和原理
Git 学习札记(一)
关于Git
版本控制
Git是现在最先进的分布式版本控制系统(distributed version control system)。所谓版本控制指的是对于文件内容变化的一系列的记录,从而我们可以查阅特定版本的修订情况。举个栗子比如wiki百科的词条都是经过多次revision的,每个修改的版本都有记录,对这些版本进行管理就是版本控制的基本思路。
分布式版本控制
最初的版本控制是在本地运行的,采用简单的数据库来记录文件每次更新的差异。但是本地的版本控制不能适应不同系统的开发者之间的协作,因此产生了集中化的版本控制(CVCS,第一个C指的是Centralized)。这样的系统有一个集中管理的服务器,所有的协同工作的客户端都要连接到这个服务器,取得文件并且修改后提交更新。但是这样也有个很明显的问题,就是如果中央服务器GG了,那么大家都无法工作。而且会丢失所有的历史版本,只留着每个客户端各自保留的快照。因此分布式版本控制系统(DVCS,D指的是Distributed)诞生了,Git就是这样的系统,这类系统的工作原理是这样的:客户端不只是跟之前集中式一样提取一个快照,而是整个地把版本仓库备份到本机,这样即使有一台机器发生故障,都可以用其它的将代码仓库恢复出来。
三种控制方式的示意图如下:
这是最原始的本地的版本控制:
这是集中式版本控制(CVCS):
这是分布式版本控制(DVCS):
Git 的特点
Git 和其他版本控制系统的不同在于:Git直接记录文件系统的一组快照,而不是把要保存的信息看做一组基本文件和每个文件每次修改的差异的积累。另外,Git上几乎所有的操作都是本地执行,因此减少了时间开支。另外,Git用 SHA-1 计算出文件内容的哈希值来作为文件的索引,因此可以保证文件的完整性。一般只做向数据库中添加数据。
Git中的文件有三种状态,相应的也分为三个区域。三种状态:
- committed (已提交)
- modified (已修改)
- staged (已暂存)
已提交表示数据已经安全的保存在本地数据库中。已修改表示修改了文件,但还没保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
三个工作区域:
- Git仓库
- 暂存区域
- 工作目录
Git仓库就是保存项目的元数据和对象数据库的地方,最重要。暂存区域是存放下次将要被提交的文件列表信息的地方。工作目录就是当前使用或修改的,从项目中独立出来的某个版本的内容。
Git的基本工作流程
Git 的基本流程如下:首先,在工作目录下修改文件内容,然后用暂存的命令(add)将修改过的文件快照放入暂存区域,然后利用提交命令(commit)将暂存区域的待提交的内容提交到Git仓库。
reference:
主要内容以及图片来源:
https://git-scm.com/
https://git-scm.com/book/zh/v2
TO BE CONTINUED
2018/02/06 周二 21:23
有皱纹的地方只表示微笑曾在那儿呆过。 —— 马克吐温