程序员修炼之道系列 | 版本控制

2021-07-19 10:14:00
LuLu
原创
4189
摘要:如今,借助版本控制工具,版本控制系统的与开发环境集成、赋予管理权限等更多功能已被解锁。

虽然时光不能倒流,但撤销键(组合键和undo键)至少可以恢复几分钟前的操作。如果错误发生在上周呢?本期视频为大家推荐一个后悔药——版本控制系统,它的功能远不止于撤销。

版本控制是什么?

版本控制系统相当于项目的时间机器,它会将所维护的所有文件都保存在一个“仓库”中,主要用于追踪文件的变更。在软件开发过程中,确保由不同的人所编辑的同一文件都得到同步。

版本控制可以解决这些问题:

1、版本存储

使用版本控制系统,软件发布的所有版本和改动细节都会被保存,在正确命名的前提下,团队成员可随时找到之前的任意版本。

2、协同合作

在版本控制系统中,团队中每个成员都可以同时编辑同一个文件,自动合并编辑部分,解决合并冲突问题。

3、备份 

每一个团队成员都会在本地有一个完整的项目副本,包括整个项目的历史记录。如果某个成员的存储出现问题,恢复需要的所有文件都可以在其他成员的本地仓库中获得。

4、了解发生了什么

版本控制系统可以显示当前版本和上一个版本之间的所有修改细节:

  • 这行代码是谁改的?
  • 当前版本中我们修改了多少行代码?
  • 当前版本和上次版本的差异在哪……

版本控制系统的演进

1、本地版本控制系统

描述:采用某种简单数据库来记录文件的历次更新差异。

优点:不需要对项目频繁复制,避免了项目信息臃肿混乱,难以区分差异的问题

缺点:无法解决多人协作问题

代表工具:RCS

2、集中式版本控制系统

描述:解决本地版本控制系统的多人协作问题。

优点:

  • 操作较简单,只需要拉取代码,提交代码;
  • 基本解决多人协作问题,每个人都可以从服务器拉取最新代码同步伙伴的进度;
  • 管理员可轻松控制各开发者的权限;
  • 只需要维护中央服务器上的数据库即可。

缺点:

  • 提交更新都需联网跟服务器进行交互,对网络要求较高;
  • 风险较大,服务器一旦宕机,所有人无法工作。服务器磁盘一旦损坏,如果没有备份将丢失所有历史数据。

代表工具:CVS、SVN

3、分布式版本控制系统

描述:解决集中式版本控制系统的缺点。

优点:

  • 去中心化,从中央服务器拉取下来的是一个完整的版本库;
  • 即使某一台机器宕机,也能找到文件的完整备份。

代表工具:Git

 

如今,借助版本控制工具,版本控制系统的与开发环境集成、赋予管理权限等更多功能已被解锁。一个充满协作、问题追踪、团队交流的更广阔的版本控制领域等我们一起探索。