1、版本控制系统介绍( VCS - Version Control System )
版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
记录文件的所有历史变化随时可恢复到任何一个历史状态多人协作开发或修改错误恢复多功能并行开发 eg: 分支、合并版本控制系统分类:1、本地版本控制系统(Local VCS)eg:RCS (Revision Control System) (linux system 常见)
优点:
简单,很多系统中都内置适合管理文本文件 eg: 配置文件 ,doc 等缺点:
只适合管理少量文件,不支持基于项目的管理支持的文件类型较单一不支持网络,无法实现多人协作2、 集中化版本控制系统(Centralized VCS) eg : CVS (Concurrent Version System ) 、 Subversion
优点:
适合多人团队协作开发代码集中化管理缺点:
单点故障必须联网操作,无法单机本地工作3、分布式版本控制系统(Distributed VCS) eg: Git 、 Mercurial
优点:
适合多人团队协作开发代码集中化管理可以离线工作每个计算机都是一个完整仓库 强备份,避免单点故障版本控制系统基本概念:
repository - 存放所有文件及其历史信息checkout - 取出或切换指定版本的文件version - 记录标识一个版本(编号或其他代码)tag - 记录标识一个主要版本(1.0、2.0、3.0) eg : 里程碑记录2、Git版本控制系统 Git : 饭桶
Git 是一个分布式版本控制系统,Git最初开发是为了取代BitKeeper,由Linux 创始人 Linus Torvalds 开发,作为Linux 内核代码管理系统使用。
Git 设计时考虑了很多方面,除了分布式版本控制系统的优点外,还考虑了以下设计目标,这些目标都成为了Git的优点:
速度简单的设计对非线性开发模式的强力支持(允许上千个并行开发的分支)完全分布式有能力高效管理类似Linux内核一样的超大模式项目(速度和数据量)为何取名“Git””
"I‘m an egotistical bastard,and I name all my projects after myself,First ‘Linux’,now 'Git'’"--Linux Torvalds
Git 原理 - 快照,而非保存区别
每一种版本控制系统都用一种办法追踪不同阶段的变化
- 文件的鉴别和操作
几乎所有操作都是在本地执行
通过校验和算法识别文件变化
- Git 使用SHA - 1 算法对文件内容或目录进行哈希运算,用得出的校验值作为识别变化的指纹,如 2324usef34893882929
多数操作均为添加操作
Git 原理 - 文件状态及工作区域
Git repository最终确定的文件保存到仓库 ,成为一个新的版本,并且对他人可见Staging area (index)暂存已经修改的文件Working Directory 编辑、修改文件。