hopeless-dream

导航

git 读书笔记

版本控制的概念

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 

本地版本控制系统和集中化的版本控制系统

本地版本控制系统是在本地磁盘上保存补丁集(文件修改前后的变化),通过应用所有的补丁,可以重新计算出各个版本的文件内容。

 

 

集中化的版本控制系统 (Centralized Version Control Systems,简称 CVCS )。最常见的是svn。所有的用户通过客户端连接到版本库,取出需要更新的文件或者提交更新。

 

 

以上两种系统都存在版本库的单点问题。如果磁盘损坏,又没有备份,将丢失所有数据。

分布式版本控制系统(Distributed Version Control System,简称 DVCS)

典型的就是git,这类控制系统是通过完整地镜像代码仓库来实现的。

 

git基础

1、版本数据控制的方式

直接记录快照,而非差异比较
其它大部分系统以文件变更列表的方式存储信息 ,这类系统(CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异 

 

 

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

 

2、基本不需要网络 

git的大多数操作都是只需要访问本地文件和资源。因为在本地磁盘上就有完整的项目历史。
如果想查看当前版本与某一版本之间的差异,Git 会查找到之前版本文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧版本文件再来 本地处理。在没有网络的情况下,可以先提交到本地,等有网的时候在上传到版本库。

3、数据的完整性

数据在存储前,git使用SHA-1散列计算校验和。Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

git的三种状态

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

  • 已提交表示数据已经提交保存在本地数据库中。
  • 已修改表示已经修改的数据还未保存到本地数据库。
  • 已暂存表示对修改的文件的当前版本做了标记,使其包含在下次提交的快照中。

git的三个工作区域:

  • git仓库:保存项目元数据和对象数据库。在克隆的时候,就是拷贝的这里的数据。
  • 工作目录:对项目某个版本独立提取出来的内容。
  • 暂存区:暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。

git基本工作流程:

  1、在工作目录修改文件

  2、暂存文件,将文件的快照放入暂存区

  3、提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

 如果 Git 目录中保存着的特定版本文件,就属于已提交状态。如果作了修改并已放入暂存区域,就属于已暂存状态。如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态 。


 

posted on 2020-03-10 14:22  hopeless-dream  阅读(218)  评论(0编辑  收藏  举报