单人开发

代码提交步骤

  1. 写代码;
  2. 使用cp命令进行对已写内容备份;
  3. vi创建log文件记录代码变更;
  4. 一个版本要发布时,使用tar命令将所有文件打包归档。
    版本控制软件历史进程

多人合作开发

代码提交步骤

  1. 多个程序员开发一个项目,各自完成代码;
  2. 将改动的文件统一发送给负责人;
  3. 由负责人统一将代码进行合并。
    版本控制软件历史进程

举例:补丁文件
版本控制软件历史进程

RCS

代码提交步骤:

  1. 检出文件(co);
  2. 对文件进行编写;
  3. commit文件(文件生成新的版本);
  4. 检入文件(ci)。
    版本控制软件历史进程

缺点
互斥写入机制。一个程序员检出文件编写时,其他人不可以进行操作。

回退历史版本:

RCS给每个文件创建了一个追踪文档(后缀,v)来记录版本历史。
版本控制软件历史进程
在最新文档内容的基础上,减去历史上发生的改变,就可以恢复到之前的历史版本。这样,RCS就实现了备份历史和记录改变的功能。
版本控制软件历史进程

CVS

特点:

  • 引进分支概念;
  • 引进库概念,文件构成一个库。
  • 采用“复制-修改-合并“模式。 使用,v文件记录改变。

代码提交步骤:

  1. 从主干创建分支,分支是主干文件在本地复制的副本;
  2. 在本地进行修改,在分支提交文件修改,文件生成不同的版本;
  3. 分支工作结束后,将分支合并到主干;
  4. 使用tag记录待发版文件集合,进行发版。 如:tag v1.0 (file1:r1.3) (file2:r1.1) (file3:r1.5)
    版本控制软件历史进程

回退到历史版本

r1.0 = r2.0 - change(rb1.0.2 - rb1.0.1) - change(rb1.0.1-r1.0)

版本控制软件历史进程

SVN

特点:

  • 合并是原子操作;
  • 支持管理Binary和Unicode文件;
  • 采用关系型数据库来存储改变集
  • svn中的版本是针对整个文件系统的(包含多个文件以及文件组织方式),每次commit生成一个整个项目文件系统树的新版本。
  • 不会从库下载整个主干到本地,而只是下载主干的最新版本。
    版本控制软件历史进程

代码提交步骤:

  1. 从分支/主干下载最新版本代码;
  2. 在本地进行修改; 将修改提交到本地分支;
  3. 分支合并到主线。
  4. 回退历史版本原理与CVS相同

GIT

特点:

  • git会保存blob(文件), tree(文件夹), commit和tag四种对象
  • commit对象包含:文件系统树的快照、修改人、修改时间、附加消息、指向它的父对象的指针。
  • 一个tag对象包含有tag的名字,和指向一个commit对象的指针。
    版本控制软件历史进程
    版本控制软件历史进程

代码提交步骤:

  1. clone代码库到本地分支;
  2. 在本地进行修改,add命令将修改的内容添加到缓存,并每一个文件计算校验和(哈希码);
  3. commit命令将当前版本的文件快照保存到 Git 仓库中;
  4. 最终将校验和加入到暂存区域等待提交分支合并到主线。
    版本控制软件历史进程

回退到历史版本:

根据commit里的父级指针回退

参考文档:
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B

https://blog.csdn.net/blueblood7/article/details/41941281

相关文章:

  • 2021-06-11
  • 2021-12-09
  • 2021-11-18
  • 2021-05-22
  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
猜你喜欢
  • 2022-02-15
  • 2021-05-15
  • 2021-04-04
  • 2022-12-23
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
相关资源
相似解决方案