简述传统VCS和Git

SCM,软件配置管理:追踪和控制软件的变化,包括版本控制和软件配置项

软件配置项(SCI):软件中发生变化的基本单元(例如文件)

版本控制(VCS)

术语:

术语含义
仓库(Repository)本地或远程的配置管理数据库(CMDB)
工作拷贝(Working copy)在开发者本地机器上的一份项目拷贝
文件(File)一个独立的配置项
版本(Version/Revision)在某个特定时间点的所有文件的共同状态
变化(Change/Diff)即code churn,两个版本之间的差异
Head程序员正在其上工作的版本

版本控制分类

本地版本控制系统

仓库存储与开发着本地机器,无法共享和协作

集中式版本控制系统

仓库存储与独立的服务器,支持多开发者之间的协作

分布式版本控制系统

仓库存储与独立的服务器+每个开发者的本地机器

既然说到版本控制系统,我们就不得不谈谈Git,Git是一个分布式版本控制系统,一个Git仓库分为三个部分:

  • .git目录:本地的CMDB
  • 工作目录:本地文件系统
  • 暂存区:.git母驴中的一个文件,隔离工作目录和Git仓库

文件状态也分为三种

文件状态意义

已修改

工作目录中的该文件和Git仓库中的有差异,但尚未保存到暂存区
已暂存工作目录中的该文件和Git仓库中的有差异,且已经保存到暂存区
已提交工作目录中的该文件和Git仓库中的相同

Object Graph对象图是一个有向无环图,描述了版本之间的演化关系。一条边A->B表示在版本B的基础上做出变化,形成了版本A。

  • 一般情况:每个Commit指向一个父亲
  • 分支:多个commit指向一个父亲
  • 合并:一个commit指向两个父亲
  • 一个“分支“只是指向commit的别名
  • HEAD指向当前工作的commit

一个commit存储一个树形节点。tree中包含了数个blob;每个blob是一个压缩了的仓库文件,不保存文件名信息。对于每个文件的每个版本(或是不同文件名但内容相同的文件),Git只会存储一个blob,而允许多个Commit tree指向一个blob。

一个commit中与之前相比未发生变化的文件,无需重复存储。文件未发生变化,则后续多个版始终指向一个blob;文件发生变化了,存储两份不同的blob,两个版本指向不同的blob

        传统VCS和Git相比

传统VCS:存储版本之间变化的代码行

Git:存储发生变化的文件,不变化的文件不重复存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值