持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
前言
大家好呀,我是L同学。在上篇文章js原型链总结中,我们学习了js中的原型链、继承、instanceof等相关知识点。今天,在这篇文章中,我们将学习git版本控制工具的知识点,包括版本控制的概念、集中式版本控制等相关知识点。
版本控制
版本控制(Version control)可以确保在软件开发的过程中由不同人所编辑的同一程序文件都得到同步。简单来说,版本控制在软件开发中,可以帮助程序员进行代码的追踪、维护、控制等等一系列的操作。
对于我们日常开发,我们常常面临如下一些问题,通过版本控制可以很好的解决:
- 不同版本的存储管理:一个项目会不断进行版本的迭代,来修复之前的一些问题、增加新的功能、需求,甚至包括项目的重构;如果我们通过手动来维护一系列的项目备份,简直是一场噩梦;
- 重大版本的备份维护:对于很多重大的版本,我们会进行备份管理;
- 恢复之前的项目版本:当我们开发过程中发生一些严重的问题时,想要恢复之前的操作或者回到之前某个版本;
- 记录项目的点点滴滴:如果我们每一个功能的修改、bug的修复、新的需求更改都需要记录下来,版本控制可以很好的解决;
- 多人开发的代码合并:项目中通常都是多人开发,将多人代码进行合并,并且在出现冲突时更好的进行处理;
在没有版本控制之前,人们通常通过文件备份的方式来进行管理,再通过diff命令来对比两个文件的差异。CVS是第一个被大规模使用的版本控制工具,诞生于1985年,是SVN的前身。
SVN因其命令行工具名为svn因此通常被简称为SVN。SVN和CVS一样,也属于集中式版本控制工具。SVN在早期公司开发中使用率非常高,但是目前已经被Git取代。
集中式版本控制
CVS和SVN都是是属于集中式版本控制系统。它们的主要特点是单一的集中管理的服务器,保存所有文件的修订版本。协同开发人员通过客户端连接到这台服务器,取出最新的文件或者提交更新。这种做法带来了许多好处,特别是相较于老式的本地管理来说,每个人都可以在一定程度上看到项目中的其他人正在做些什么。
但是集中式版本控制也有一个核心的问题:中央服务器不能出现故障:如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作;如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据;