1 版本控制的概念
1.1 为什么需要版本控制?
以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:project_v1、project_v1.1、project_v2等等,通过这种方式记录我们项目的不同版本的修改,有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改,删除等操作。这样的操作是很繁杂的,有的时候还可能因为一些非人为因素导致文件丢失这样的事故。有了版本控制系统,我们就不用再手动进行一些繁杂的操作,并且对于文件丢失这种事故我们也不用再担心,你可以随便回到历史记录的某个时刻。
1.2 版本控制的概念
工程设计领域中使用版本控制管理工程蓝图的设计过程。 在 IT 开发过程中也可以使用版本控制思想管理代码的版本迭代。一个好的版本控制工具应该具备以下的功能:
(1)协同修改
多人并行不悖的修改服务器端的同一个文件。
(2)数据备份
不仅保存目录和文件的当前状态, 还能够保存每一个提交过的历史状态。
(3)版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据, 以节约存储空间, 提高运行效率。
(4)权限控制
对团队中参与开发的人员进行权限控制
对团队外开发者贡献的代码进行审核——Git 独有
(5)历史机理
查看修改人、 修改时间、 修改内容、 日志信息。将本地文件恢复到某一个历史状态。
(6)分支管理
允许开发团队在工作过程中多条生产线同时推进任务, 进一步提高效率。
1.3 版本控制工具
版本控制系统分为以下两类:
- 集中式版本控制系统
集中式版本控制系统,版本库是集中存放在中央服务器的,工作的时候,用的是自己的电脑,所以,我们首先需要从中央服务器上拉取最新的版本,然后开始工作,等工作完了,再把自己的工作提交到中央服务器。在这里借用廖雪峰老师的一个比喻,中央服务器好比是一个图书馆,你要改其中的一本书,必须先要从图书馆里把书借出来,然后更改,改完之后,再放回图书馆。
不足:集中式版本控制系统的一个最大毛病就是必须联网才能工作,所以对于网络环境比较差的情况使用集中式版本控制系统是一件比较让人头疼的事情。
- 分布式版本控制系统
分布式版本控制系统没有中央服务器的概念,我们使用相关的客户端提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。并且,即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上。
分布式版本控制系统没有中央服务器的概念,我们使用相关的客户端提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。并且,即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上。
2 Git是什么?
2.1 Git简介
Git是一个版本控制系统,属于分布式版本控制系统的一种。官网地址:git-官网
Git的优势:
- 大部分操作在本地完成, 不需要联网
- 完整性保证
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅
- 与 Linux 命令全面兼容
2.1 Git安装
下面这个网站有详细介绍,里面也有详细的介绍,方便快速上手:Git-Book
3 GitHub、GitLab介绍
GitHub 和 GitLab 都是基于 web 的 Git 仓库
相同点:都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。
不同点:GitHub 作为开源代码库,拥有超过 900 万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。
GitLab 解决了这个问题,你可以在上面创建私人的免费仓库。GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比较 GitHub , 它有不少特色:
- 允许免费设置仓库权限;
- 允许用户选择分享一个 project 的部分代码;
- 允许用户设置 project 的获取权限,进一步提升安全性;
- 可以设置获取到团队整体的改进进度;
- 通过 innersourcing 让不在权限范围内的人访问不到该资源;
总结,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。