您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Git简介

我们学一样技术或者一种工具,刚开始最好先了解一下它的来龙去脉。虽然无关使用,但通过它背后的故事可能会激发起我们学习它的浓厚兴趣,从这一点来讲还是有实际意义的。

提起 Git,就不得不提起 Linus 和他的 Linux。计算机相关从业者大多都知道,linus 创建了 Linux 系统,但是 Linux 系统并不是由 Linus 人完成的,它依赖于广大的开发者源源不断的贡献来共同开发维护。那么问题来了,这么多人来共同维护系统,当时大家是怎样来保持高效的协作呢?这么多人提交,是怎么保证不冲突呢?你可能会想到使用过的一些版本控制系统,不过可能要让你失望了,虽然当时有很多版本控制系统像 CVS、SVN 等,但是都被 linus 舍弃了,因为这些集中式的版本控制系统需要联网,而且速度很受影响。所以,很长一段时间内,都是靠 linus 来自己手工合并的(送上大拇指)。

但是,Linux 系统越来越庞大,这么下去不是个问题。直到 2002 年左右,BitMover 公司将他们的商业的版本控制系统 BitKeeper 给 Linux 社区免费使用,这下大家的工作量稍微减轻了些。但是好景不长,社区牛人聚集,还没一两个手脚乱动的?有人试图破解 BitKeeper 的协议,但是被 BitMover 公司发现了,于是乎 BitMover 公司一怒之下收回了他们的使用权。

本来单车变摩托,现在又骑单车了。不过,Linus 就是 Linus,怎么可能重走旧路呢,毕竟合并手很疼。痛定思痛,没花多久自己用 C 开发了一套分布式版本管理系统,没错就是 Git!

后来 Git 越来越流行,比如程序员大型交友网站 Github 使用的就是 Git 存储。

我们先来看下官方解释:

Git is a distributed version control sy designed to handle everything from small to very large projects with speed and efficiency.

Git is_ and has a . It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like , convenient , and .

简单给大家翻译下,它的意思是说:

Git 是免费的开源分布式版本控制系统,旨在高效地处理从小型到大型项目的所有。

Git 易于学习,且出众。 它的本地分支,方便的暂存区域和多个工作流等,其优于 Subversion,CVS,Perforce 和 ClearCase 等 SCM 工具。

其实,翻译过来还是有点晦涩难懂。其中一些概念对于新手来说很难真正理解。别着急,我挑其中的重点概念来给大家具体讲解下。

分布式版本控制系统是相对于集中式版本控制系统来说的。

集中式版本控制系统首先需要联网,提交速度依赖于网络带宽。而且,集中式版本控制系统的版本库是集中存放在中央服务器的,每个人提交的时候,需要先提交到中央服务器,然后再从中央服务器拉取别人的到自己的本地。

分布式版本控制系统没有中央服务器,每个人本地都是完整的版本库,所以也不依赖网络。多个人在自己本机同后,只需把各自的推送给对方,就可以互相看到对方的了。

基于以上特点可以看出,分布式版本控制系统的安全性比集中式版本控制系统高。因为每个人电脑里都有完整的版本库,你电脑宕机丢失本地后,随便从其他人那里复制就可以了。而集中式版本控制系统的中央服务器要是出了问题,那就很难恢复了。

分支,可以先简单理解成就是一条时间线,对于给 A 老板的文档,每个人每一次提交过程都是这条时间线上的节点,这些节点共同串成了一条时间线,也就是分支。同样,你可以创建 B 分支,在 B 分支上进行另版本的提交。
关于分支的理论与具体操作,我们在后续详细说明。

Git 与任何其他 VCS 之主要区别在于对数据的处理方式。

大多数其他版本控制系统将信息存储为基于的更改的列表。这些其他系统保存的是对每个所做的更改(通常称为基于增量的版本控制)。如下图,每个版本记录的是发生的改变。

而 Git 每次提交或保存项目状态时,基本上都会拍下当时所有的,并存储对该快照的引用。为了提高效率,如果没有更改,Git 不会再次存储该,而只是指向它已经存储的先前相同的。Git 更像是一堆快照来处理数据。如下图,每个版本记录的是完整的信息。

举个例子,你和多个同事需要写作完成 word 文档,每个同事负责其中一部分,那么怎么进行协作编写呢?可能会是各自写完自己的模块后由某个人进行手工整理成你们需要的。但这样其实很不方便,所以版本控制系统出现了,它的作用替最后那个人进行整理的。当然,远不止这,比如你们的文档编写完毕后弄丢了,版本控制系统可以帮忙找回历史。再比如,你需要整理多个不同版本的 word 文档给不同的 boss 看,你大可不必备份多份副本,版本控制系统同样可以轻松完成。所有的版本控制系统都是干这些的,像 SVN、CVS 等,当然 Git 也不例外。不同的是,Git 有自己的特点和版本管理方式,后续我们会详细讲解。

好了,今天先带大家初识 Git,我们先从概念上对 Git 有大致的了解,后续再通过实际的操作和深入的理论讲解去学习 Git。

本小节知识点回顾:


联系我
置顶