1起源:
- 绝大多数Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上
- 集中式的版本控制系统不好用
- 商用的分布式版本控制系统BitKeeper的停止授权
2目标
- 速度
- 简单的设计
- 对非线性开发模式的强力支持
- 完全分布式
- 有能力搞笑管理类似Linux内核一样的超大规模项目
3版本控制系统
3-1集中式版本控制系统
- 版本库是集中存放在中央服务器的。
- 有一个单一的集中管理的服务器,保存所有文件的修订版本
- 如果中央服务器坏了。。。
3-2 分布式版本控制系统
- 每个人的电脑都是一个完整的版本库
- 安全性更高
- 提供服务器,但是仅仅是用来方便”交换“大家的修改。
4 GIT对象模型
1. SHA
- 通过一个40字符的”对象名“来索引用来表示项目历史信息的文件, SHAI哈希计算得到值
- 好处
- git只需要比较对象名,就可以判断对象
- 不同仓库中相同的内容会存放在相同“对象名”下
- 检查对象名和内容的SHAI哈希值,盘对对象内容是否正确
1. 对象
- 类型
- blob 类型用来存储文件数据, git show查看
- tree 有点像一个目录,用来管理一些tree和blob:git ls-tree看到更多tree的细节
- commit指向一个tree,用来标记某一个特定时间点的状态
- tag用来标记某一次提交的方法:
- 大小
- 内容
-
1. GIT目录与工作目录
1. Git目录:你的项目存储所有历史和元信息的目录, .git
1. 工作目录:存储着你现在签出来用来编辑的文件
1. GIT索引:一个在你的工作目录和项目仓库间的暂存区
1. 查看索引 git status