一、引入
(1)大家玩游戏、下载App等都是有一个版本的。
(2)如果官方发布了新版本,我们就需要去下载。
(3)游戏回档。
(4)内测版本可能发了一个版本,觉得不合适,进行回退了。
怎么做到这个版本回退到上一个版本呢?难道是copy一份代码、copy一份代码、copy一份代码重复性的去做吗?
一个游戏代码,好几个G,怎么备份这个版本呢?一天发一个小版本,或者一周发一个小版本,经常更新?难道都是CV复制吗?
在学校:如果是还要一版代码,就是在原有的基础上粘贴出来一份,在这最新的一份上进行修改。
企业中:如果是大型的版本,一个版本就好几个G。内存、服务器、电脑不够放呀!!!如果还有bug修复,很麻烦。
二、版本控制定义
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的工具管理,是软件配置管理的核心思想之一。
代码、配置文件、说明文档等全部使用一个工具来管理,不是人为的备份一份、备份一份来操作。
简而言之:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
(1)这个系统可以看到什么时候某人发布了什么版本,修改了什么内容等等。
(2)不管改变了啥,会有个记录,谁改的,什么时间改的,改了什么内容,发生什么变化都可以显示出来。
2.1 配置文件
微信小程序写过各种各样的配置文件。
例如:计算机的相关配置信息,最后可以任何地方拿过来使用这个配置好的相关配置文件,可以在多个平台发布微信小程序。
在计算机科学领域,配置文件是一种计算机文件,可以为一些计算机程序配置参数和初始设置。
例如:玩游戏的时候都有一些偏好设置,其实这些设置都是一种配置,下次加载的时,就是把这些配置读取出来。
玩游戏里面的各种初始化配置,信息修改等都是一种配置,下次登录的时候可以把配置重新加载出来。
总结:版本控制文件就相当于软件里面的配置文件。
例如,游戏里的帧数,画质等有一个初始化配置,就是软件的配置文件。这些初始化配置就可以当做这个软件的初始化配置,这些配置我们是可以更改的。
自己改就是个性化配置。
2.2 软件配置管理
软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。
SCM活动的目标就是为了标识变更、控制变更(啥时候变更的,能不能变更,谁来变更)、确保变更正确实现并向其他有关人员报告变更。
从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。
2.3 版本控制的理解
你可以把一个版本控制系统(缩写VCS)理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照,当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。
例如,虚拟机里有个快照,Linux操作系统的时候会经常讲。
- 安装Linux操作系统,在虚拟机上装各种软件(例如JDK,MySQL数据库等环境)——用来做测试,初始化配置。
- 测试可能会测出来问题。所以我把环境配好之后,添加一个项目快照。
在虚拟机上进行测试,装各种各样的软件进行测试,装着装着的时候,可能把虚拟机装崩了。解决办法:装好Linux操作系统后,初始化配置完成后,
- 项目快照作用:保存某一时刻的版本,将来如果出错了,可以回退到这个快照,就不需要重新装操作系统,方便容易。
版本控制与项目的种类,使用的技术和基础框架并无关系:
(1)无论是设计开发一个HTML网站或是做一个应用软件,它的工作原理都是一样的。只是对代码进行管理,不管其他的东西。
(2)注意:版本控制工具现在主流公司里面使用最多的:Gitee现在2021年占比80%以上、2015年/2016年很多公司都在使用SVN。无论是SVN还是Gitee,都是与项目没有关系的。无论是使用Java做的项目,还是使用C语言做的项目,还是前端项目,Golang等。版本控制是对代码的一个管理,无论什么代码,与版本控制是没有关系的。
(3)你可以选择任何你喜欢的工具来工作,它并不关心你用什么样的文本编辑器,绘图程序,文件管理器或其他工具。。无论是很强大的文本编辑器或者高级的IDE工具、例如IDEA等等,版本控制工具都不管。版本控制工具Gitee可以脱离这些工具存在。
(4)Gitee也是可以结合一些高级的开发工具来使用的。
因此不要混淆版本控制的备份系统和一般的部署系统。 当你开始尝试在你的项目中使用版本控制,你不需要替换和改变开发过程中使用的那些常用工具。