git基础使用–1–版本控制的基本概念
1.版本控制的需求背景,即为啥需要版本控制
-
先说啥叫版本,这个就不多说了吧,我们写代码的时候肯定不可能一蹴而就,肯定是今天写一点,明天写一点,对于项目来讲,每天都在增多,每天都不一样,每天都是一个版本
-
为啥需要版本控制呢
-
因为有一天,你突然发现哇啦哇啦你今天写了一堆写错了,你想从昨天的开始重新写,可是这个时候你已经没有昨天的了,这可怎么办呢
-
为了解决这个问题,就需要我们把每次的版本都记录保存下来,方便需要的时候找回
-
那有些大聪明肯定想到了,把每天的代码复制一份,按日期命名
-
没毛病,但是是不是有点太麻烦了,而且如果要支持多人修改怎么办等等一系列如下问题
- 协同修改,病人并行开发
- 数据备份
- 版本和权限控制
- 误删找回
- 分支管理
- 等等
- 这是就需要专业的版本控制系统来帮助我们实现。
- 根据架构模式,可以分为集中式版本控制和分布式版本控制,分别以SVN和git为代表
2. 集中式版本控制SVN
-
啥叫集中式,简单点说就是版本的控制都集中在一台中央服务器上,每个人可以吧自己的代码上传到服务器,也可以从服务器上下载
-
这种方式可以很好地实现版本控制,代码合并等功能,而且管理者可以轻松掌握所有人的开发进度,但是也有致命的弱点。因为他有唯一的中央服务器,如果这个服务器挂掉,那所有人都凉凉
-
所以他有两个致命的弱点
- 单点故障
- 容错性差
- 这就需要更先进的版本控制系统,于是git出现了
3. 分布式版本控制 Git
-
git在从服务器提取的时候,不是提取最新的文件快照,而是把整个完整的代码仓镜像下来形成本地库,这样每个程序员手里都有一份完成的本地代码仓,如果服务器挂掉了,可以从任何一个本地仓快速恢复。当然,如果本地仓有更新,也可以同步到服务器进行同步更新
-
这样即使在断网的情况下也可以进行开发,因为版本控制是在本地进行的
4. SVN和Git的比较
- SVN 是本地项目对服务器仓库,Git是本地仓库对服务器仓库
- SVN不支持离线工作,Git支持离线工作,版本控制在本地进行,服务器仓库相当于是一个同步总备份