什么是版本控制?

管理更新的历史记录

集中型与分布型

集中型

集中型

只放在一个仓库,便于管理,但一旦无法联网或服务器故障会导致数据丢失,无法获取最新代码等问题。
代表:SVN

分散型

分散型

每个开发者都会有一个仓库,不必连接远程仓库就可以开发。
代表:Git

版本控制工具的功能

  • 协同修改
  • 数据备份
  • 版本管理
  • 权限控制
  • 历史记录
  • 分支管理

    Git

    优点

  • 大部分在本地操作,不需要联网

  • 完整性保证
  • 尽可能添加数据而不是删除或者修改数据
  • 分支操作非常快捷流畅
  • 与 Liunx 命令全面兼容

    本地状态

Git工作流程

Git 和代码托管中心

  • 局域网环境下
    • GitLab 服务器
  • 公网环境下

    • GitHub
    • 码云

      本地库和远程库

      团队内部协作
      跨团队协作

      哈希的原理

      哈希是一系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下共同点:
  • 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。

  • 哈希算法确定,输入数据确定,输出数据能够保证不变。
  • 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化比较大。
  • 哈希算法不可逆。

Git 底层使用的是 SHA-1 算法。

保存版本的机制

集中式

版本控制 - 图6

以文件变更列表的方式存储信息。这类系统将他们存储的信息看成是一组基本文件和每个文件随时间逐步累积的过程。

分布式

版本控制 - 图7

Git 把数据看成是小型文件系统的一组快照。每次更新 Git 都会当前的全部文件制作一个快照的索引。为了高效,如果文件没有被修改, Git 不再重新存储改文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式称之为快照流。