关于Git

关于版本控制

版本控制系统 说明 举例
本地版本控制系统 用数据库记录文件的更新差异 RCS
集中化的版本控制系统 为了解决在不同系统上的开发者协同工作的问题,引入集中化的版本控制系统,这种方式的好处是每个人都可以看到整个项目的进度,缺点是一旦中央处理器宕机,所有人都无法在该时期提交 CVS、Subversion、Perforce
分布式版本控制系统 为了解决CVCS出现的问题,提出分布式版本控制系统。客户端并不只是提取最新版本的文件快照。任何一处协同工作的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 Git、Mercurial、Bazaar、Darcs

image-20200710140933888

image-20200710140950818

image-20200710141021662

Git是什么?

Git和其它版本控制系统的主要差别在于Git对数据的方法。

其它大部分系统以文件变更列表的方式存储信息,这类系统几行存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异(它们通常称为基于差异的版本控制)

image-20200710141845443

Git把数据看作是对小型系统的一系列快照。在Git中,每提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。为了效率,如果文件没有修改,Git不再重新存储该文件,而只是保留一个链接指向之前存储的文件。Git对待数据更像是一个快照流

image.png

在Git中,绝大多数操作都只需要访问本地文件和资源。

Git通过计算校验和来保证数据完整性,这种机制叫作SHA-1 散列(hash, 哈希)。

Git操作一般只有添加,这很难让Git执行任何不可逆操作,进而保证了数据的完整性。

总的来说,Git有一下几个特点:

  • 存储快照
  • 本地执行
  • 保证完整性(hash)
  • 一般只添加数据

另外,Git有三个状态:

已提交(committed)、已修改(modified)和已暂存(staged)。

  • 已提交:数据已经安全地保存在本地的数据库中
  • 已修改:修改了文件,还没有保存
  • 已暂存:已对修改文件的当前版本做了标记,但是还没有提交

这让Git项目就有三个阶段:工作区、暂存区和Git目录

image-20200710143738807

工作区就是我们工作的目录(能直接接触到的,是Git项目某个独立版本的体现)

暂存区是一个文件,保存了需要提交的信息,也称为“索引”

Git目录就是保存整个项目数据的部分,包括所有文件的快照等。克隆仓库,复制的就是你这里面的数据。

基本的工作流程:

  • 在工作区修改文件
  • 将更改的文件加入暂存区(git add 文件或目录名)
  • 找到暂存区的内容 ,将快照永久性地存储到Git目录
posted @ 2020-07-10 14:47  zjy4fun  阅读(139)  评论(0编辑  收藏  举报