====== Git 概念 ====== ===== 1 概念 ===== 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。 ===== 2 分类 ===== - 本地版本控制系统 - 集中式版本控制锡系统 - 分布式版本控制系统 **本地版本控制系统**本地保存补丁集,记录文件变化历史。 {{https://git-scm.com/book/en/v2/images/local.png}} **集中式版本控制锡系统** 在以上基础上,解决协同工作。服务器集中保存版本历史。问题是过于以来服务器和联网。 {{https://git-scm.com/book/en/v2/images/centralized.png}} **分布式版本控制系统** git 完整仓库克隆。每个本地都是完整的版本库。不用联网即可进行大多数操作。联网只是为了同步。分布式版本控制系统为多层次的团队分工协作提供了可能。比如不同团队维护不同的分支。核心团队维护主分支。等非常灵活的工作流程或者协作模型。 {{https://git-scm.com/book/en/v2/images/distributed.png}} ===== 3 git 特性 ===== - 记录快照,而非差异。 - 几乎所有操作都是本地执行 - 保证数据完整性。 用校验和索引节点sha-1。git 可以识别任何变化。 - 一般只添加数据。git 大多数操作一般不会清除数据。(但注意没有跟踪的文件除外) (比如:git clean 只清理未跟踪, 而git reset 等大多数操作,只是节点间的移动,不会删除任何东西) 记录快照,而非差异。 {{https://git-scm.com/book/en/v2/images/deltas.png}} Git\\ {{https://git-scm.com/book/en/v2/images/snapshots.png}}