DevWeekly收集整理每周优质开发者内容,包括开源项目、工具资源、技术文章等方面,每周五首发于DevWeekly,欢迎大家Star并收藏!
提起Git就绕不开一个概念:版本控制系统。
因此,在学习Git之前有必要先了解一下版本系统的概念,这样才会有一个更加全局清晰的认识。
1 版本控制系统
版本控制系统是用来跟踪、制作和管理软件代码变化的工具。它能够帮助开发者存储不同阶段对文件所做的每一个改动,这样我们、或者与我们协作开发的同事就可以在检索到这些改动。
目前主要包含3种类型的版本控制系统:
- 本地版本控制系统
- 集中式版本控制系统
- 分布式版本控制系统
下面,就分别介绍一下这3种版本控制系统。
1.1 本地版本控制系统
本地版本控制系统是位于你本地计算机上的一个本地数据库,其中每个文件的变化都以补丁的形式存储。
每一个补丁集只包含自上一版本以来对该文件所做的修改。
为了看到文件在任何给定时刻的样子,有必要将文件的所有相关补丁按顺序罗列在一起,直到逐个查看找到对应的版本为止。
本地版本控制系统有一个很大的问题,所有东西都储存在本地。如果本地数据库出了什么问题,所有的补丁都会丢失。如果一个版本发生了什么事情,那么这个版本之后的所有修改都会丢失。
另外,与其他开发者或团队合作是非常困难的。
1.2 集中式版本控制系统
集中的版本控制系统有一个包含所有文件版本的服务器,多个用户可以同时访问服务器上的文件,把它们拉到他们的本地计算机上,或者从他们的本地计算机上把它们推到服务器上。
相对本地版本控制系统,这与其他开发者或团队的合作变得容易。
这种结构的最大问题是,所有东西都存储在集中式服务器上。如果该服务器出了问题,没有人可以保存他们的版本变化,拉动文件或进行协作。
与本地版本控制类似,如果数据库被破坏,而备份没有被保留,你就会失去整个项目的历史,除了人们碰巧在他们的本地机器上有的单一快照。
比较知名的集中式版本控制系统有Microsoft Team Foundation Server (TFS)和SVN。
1.3 分布式版本控制系统
有了分布式版本控制系统,用户不仅是从服务器上拉取最新的文件快照,而是一种完全镜像存储库,包括全部