一、什么是版本控制
我们在写论文的时候,总是会不停地修改,下面这种状况相信很多人都遇到过:
因为不清楚自己删除的东西以后是否会用到,新增的又是否正确,所以在每次修改之后都“另存为”一个新的文档,这时候要是有一个软件能帮你记录每一个版本,并且能显示出各个版本之间的差异,那就方便多了。幸运的是,这样的软件还真有,Git 就是其中一个,功能如下所示:
二、版本控制系统的分类
版本控制可以分为两大主流类——集中式版本控制系统,分布式版本控制系统,接下来讨论他们之间的区别。
1.集中式版本控制系统
对于集中式版本控制系统(如CVS、SVN)而言,版本库是集中存放在中央服务器的,开发者之间的合作方式是共用一个仓库(repository),无论这个仓库是在本地还是在远端,所有成员都共同 存取 于同一个仓库,如下图所示:
集中式版本控制系统最大的 缺点 就是必须联网才能工作,开发者想要取出代码、提交到仓库,或是对档案库做一些其他的操作,都必须在能够连网的环境下进行,这会大大降低开发效率。
2.分布式版本控制系统
分布式版本控制系统(如Git)使得每个人的电脑上都是一个完整的版本库,这样,在工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
在分布式版本控制系统中,开发者可以进行“推”(push)的动作,其意义是将自身档案库中的变更送至其他的档案库;也可以进行“拉”(pull)的动作,其意义是获取其他档案库的变更。
Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,其中最重要的意义在于档案库中包含了完整的版本管理数据、例如提交信息、版本变化记录等等。 因此,所有对版本控制系统的操作,都可以直接在本机端的档案库中进行,包括提交、分支、合并、回退等。