程序员修炼之道系列 | 版本控制
原创-
发表时间 2021-07-19
-
阅读数 4596
-
最后编辑:程一凡 于 2024-07-02 15:59:36
虽然时光不能倒流,但撤销键(组合键和undo键)至少可以恢复几分钟前的操作。如果错误发生在上周呢?本期视频为大家推荐一个后悔药——版本控制系统,它的功能远不止于撤销。
版本控制是什么?
版本控制系统相当于项目的时间机器,它会将所维护的所有文件都保存在一个“仓库”中,主要用于追踪文件的变更。在软件开发过程中,确保由不同的人所编辑的同一文件都得到同步。
版本控制可以解决这些问题:
1、版本存储
使用版本控制系统,软件发布的所有版本和改动细节都会被保存,在正确命名的前提下,团队成员可随时找到之前的任意版本。
2、协同合作
在版本控制系统中,团队中每个成员都可以同时编辑同一个文件,自动合并编辑部分,解决合并冲突问题。
3、备份
每一个团队成员都会在本地有一个完整的项目副本,包括整个项目的历史记录。如果某个成员的存储出现问题,恢复需要的所有文件都可以在其他成员的本地仓库中获得。
4、了解发生了什么
版本控制系统可以显示当前版本和上一个版本之间的所有修改细节:
- 这行代码是谁改的?
- 当前版本中我们修改了多少行代码?
- 当前版本和上次版本的差异在哪……
版本控制系统的演进
1、本地版本控制系统
描述:采用某种简单数据库来记录文件的历次更新差异。
优点:不需要对项目频繁复制,避免了项目信息臃肿混乱,难以区分差异的问题
缺点:无法解决多人协作问题
代表工具:RCS
2、集中式版本控制系统
描述:解决本地版本控制系统的多人协作问题。
优点:
- 操作较简单,只需要拉取代码,提交代码;
- 基本解决多人协作问题,每个人都可以从服务器拉取最新代码同步伙伴的进度;
- 管理员可轻松控制各开发者的权限;
- 只需要维护中央服务器上的数据库即可。
缺点:
- 提交更新都需联网跟服务器进行交互,对网络要求较高;
- 风险较大,服务器一旦宕机,所有人无法工作。服务器磁盘一旦损坏,如果没有备份将丢失所有历史数据。
代表工具:CVS、SVN
3、分布式版本控制系统
描述:解决集中式版本控制系统的缺点。
优点:
- 去中心化,从中央服务器拉取下来的是一个完整的版本库;
- 即使某一台机器宕机,也能找到文件的完整备份。
代表工具:Git
如今,借助版本控制工具,版本控制系统的与开发环境集成、赋予管理权限等更多功能已被解锁。一个充满协作、问题追踪、团队交流的更广阔的版本控制领域等我们一起探索。