说到git,必须要先谈一下版本控制。什么是版本控制?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制的类型大致可以分为三大类:
本地版本控制系统
其中最流行的一种叫做 rcs,它的工作原理基本上就是保存并管理文件补丁(patch)。文件补丁是一种特定格式的文本文件,记录着对应文件修订前后的内容变化。所以,根据每次修订后的补丁,rcs可以通过不断打补丁,计算出各个版本的文件内容。
为了让在不同系统上的开发者协同工作,集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS)应运而生。这类系统,诸如 CVS,Subversion以及 Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。然而,事分两面,有好有坏。这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,而被客户端偶然提取出来的保存在本地的某些快照数据就成了恢复数据的希望。但这样的话依然是个问题,你不能保证所有的数据都已经有人事先完整提取出来过。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
分布式版本控制系统
分布式版本控制系统( Distributed Version Control System,简称 DVCS),在这类系统中,像 Git,Mercurial,Bazaar以及 Darcs等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
版本控制的类别说完了,那么为什么要如此重视git呢?基于其分布式版本控制的优点和工作(创建和切换分支等)的高效性,git已经越来越流行,在国内的IT开发中也会慢慢取代SVN的。当然取代只是博主个人观点,so,上干活。
git 的命令行的使用