Git简介

Git简介教程

Git 的作者是 Torvalds,这位天才只用了 10 天的时间从开始规划 git 到 git 的第一个版本的诞生。

Git诞生

Linus 在 1991 年创建了开源的 Linux,从此,Linux 系统不断发展,已经成为最大的服务器系统软件了。Linus 虽然创建了 Linux,但 Linux 的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为 Linux 编写代码,那 Linux 的代码是如何管理的呢?

事实是,在 2002 年以前,世界各地的志愿者把源代码文件通过 diff 的方式发给 Linus,然后由 Linus 本人通过手工方式合并代码!

你也许会想,为什么 Linus 不把 Linux 代码放到版本控制系统里呢?不是有 CVS、SVN 这些免费的版本控制系统吗?因为 Linus 坚定地反对 CVS 和 SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比 CVS、SVN 好用,但那是付费的,和 Linux 的开源精神不符。

不过,到了 2002 年,Linux 系统已经发展了十年了,代码库之大让 Linus 很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是 Linus 选择了一个商业的版本控制系统 BitKeeper,BitKeeper 的东家 BitMover 公司出于人道主义精神,授权 Linux 社区免费使用这个版本控制系统。

安定团结的大好局面在 2005 年就被打破了,原因是 Linux 社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发 Samba 的 Andrew 试图破解 BitKeeper 的协议,被 BitMover 公司发现了,于是 BitMover 公司怒了,要收回 Linux 社区的免费使用权。

之后,Linus 花了两周时间自己用 C 语言 写了一个分布式版本控制系统,这就是 Git!一个月之内,Linux 系统的源码已经由 Git 管理了!

Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQuery,PHP,Ruby 等等。

Git三个诉求

极具前瞻性的三个诉求

在确定开发 git 前,Torvalds 对市面上多个版本管理方案进行过评估,但现有的方案都不令人满意,最终决定开发自己的版本管理系统。

Torvalds 认为,健壮的版本管理系统应当有以下三个特性:

  • 可靠性(reliable)
  • 高效(high-performance)
  • 分布式(distributed)

这三个特性,被视为 git 的核心灵魂所在,深远的影响了 git 及其他 SCM 的后续发展。

可靠性(reliable)

数据的存入取出必须是安全的、一致的。所有行为都要校验,仓库任何部分不允许篡改。在今天看来,这并不是什么高明之举,但在当时,绝大多数的 SCM 都做不到这一点。那时候,人们依赖保护中央服务器来保证数据不被篡改,而不是依靠版本管理自身的设计来保证。

Torvalds 认为,应当通过算法来保证,仓库任何一个字节被篡改,都能够被发现。

高效(high-performance)

这是 git 极具优势的特性。Torvalds 认为,版本管理的所有操作都必须在毫秒级内完成:这是对 svn 最大的批评。查日志、拉分支、合并、提交这些高频率操作,必须能够在本地能够完成,而不是等待服务器响应。这一特性直接决定了 git 能够被广泛传播。

作为对比,svn 每一步操作都在等待数据包成为了人们口中的诟病。

分布式(distributed)

以往人们在备份资料上花了很大精力:传统的中央服务器,资料受损是灾难性事故。现在,所有人电脑中的 git 仓库都是一致的,每个人的仓库都是完整的副本。完整的副本意味着可以在本地做所有事;允许相互同步促使它被设计成为自带数据校验。

最终,Torvalds 围绕着这三个诉求,用 10 天的时间创造出 git。

事实证明,这些想法是极具前瞻性的。git 在解决原有诉求的前提下,还解决了长久以来的一些痛点。

Git简介总结

Git 的作者是 Torvalds,这位天才只用了 10 天的时间从开始规划 git 到 git 的第一个版本的诞生。