深入 git 必看:git 是如何被创造的?讲述 git 的诞生史、核心思想及其父:Linus Torvalds

git 是世界上最先进的分布式版本控制系统,没有之一。

前言

本文简要阐述了 git 的诞生历程,以及其作者 Linus Torvalds(林纳斯·托瓦兹,同时也是 Linux 之父)对 git 的思考。对开发者而言,了解 git 产生的背景和设计理念,有助于更好地理解和使用 git;对管理者而言,则能更好地对企业项目开展有效的管理。

本文授权并同步首发于欢聚时代旗下技术公众号:YYGeeker。更多干货,欢迎订阅。
未经许可,严禁转载。
本文阅读用时:8 分钟。

欢聚时代(YY)及虎牙(HUYA)面试内推请移步文末。

年轻时的 Linus Torvalds

芬兰,被誉为千湖之国。这是一个由众多湖泊和岛屿组成的国家,准确的说,全国共有 188,000 个湖泊和 179,000 个岛屿。

1969 年,Linus Torvalds 生于芬兰一个知识分子家庭。父亲 Nils Torvalds 毕业于赫尔辛基大学,是一名活跃的电台记者。母亲 Anna Torvalds 同样毕业于赫尔辛基大学,也是一名记者。有趣的是,他的祖父奥 Ole Torvalds 也是一名记者。除此之外,Torvalds 的外祖父 Leo Tornqvist 是芬兰第一批统计学教授。优秀的家庭背景为 Torvalds 奠定了接受良好教育的基础。Torvalds 在 11 岁时,应其外祖父要求用 BASIC 语言编写一些统计学方面的小程序。大众普遍认为,这是他编程经历之始。

在这样的背景下,似乎注定了这位少年拥有不平凡的成长经历。

CC BY-SA 4.0 图片版权许可

1988年,Torvalds 进入赫尔辛基大学计算机科学系就读。在兴趣的趋势下,Torvalds 创造并发布了自制的操作系统,并将其命名为 Linux。1996 年硕士毕业并移居美国,后拥有美国国籍。2003 年,为专心维护 Linux 从全职公司辞职。

芬兰人性格内敛,这与 Torvalds 的行事方式不谋而合。但他对开源的信念是近乎执着的,为此不少树敌。

赫尔辛基大学,成立于1640年,是芬兰最大且历史最悠久的最高学府。Torvalds 一家三口都毕业于此。

与 BitKeeper 分道扬镳:git 诞生的导火索

在 git 诞生之前,Torvalds 选择使用 BitKeeper 进行 Linux 版本管理。BitKeeper 是一个闭源的商业软件,这个决定长期受到社区的质疑和争议。

公有领域 图片版权许可

2005 年,一位 Linux 开发成员 Andrew(Samba 协议之父)写了一个可以连接 BitKeeper 仓库的外挂,因此 BitMover 公司(BitKeeper 持有者)认为他反编译了 BitKeeper。BitMover 决定中止 Linux 免费使用 BitKeeper 的授权。最终 Linux 团队与 BitMover 磋商无果,Torvalds 决定开发自己的版本管理系统。

十天后,git 诞生了。

你没有看错。git 从开始到诞生,Torvalds 这位天才只用了 10 天的时间。

极具前瞻性的三个诉求

在确定开发 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 在解决原有诉求的前提下,还解决了长久以来的一些痛点。

刺破痛点

从工程的角度看,许多 SCM 方案都有各自的杀手锏,例如 BitKeeper 在超大型项目的优越性能,以及 SVN 精准的权限控制。但在实际生产方面,则有所欠缺。

代码政治

大多数 SCM 都存在权限争议问题,特别是在超大型项目上。开发者最常见的发问是,你凭啥不给我权限?在有些企业,代码管理被沦为政治工具,权限则被视为权利的象征。分布式的 git 则不存在此问题,如果你拥有该仓库,你就拥有了所有的权限。

提交粒度

如果「提交代码」容易对他人造成影响,那么就没人愿意频繁提交。在开发阶段,由于代码始终无法完美(例如,包含测试代码、代风格错误、还有待改动),以至于总是无法提交代码(强行提交将造成他人无法运行)。导致的结果是,大量改动堆积,最后一次性提交。这样的后果是,单个 commit 提交粒度极大,还会导致合并、code review、乃至回滚的困难。而 git 的 commit 操作不需要推送到远程,因此随意提交也不会不影响他人。

创建新分支

在许多 SCM,创建新分支是「重量级操作」,并且所有人可见。在许多项目看来,创建新分支是重大行为。因为创建新分支影响重大,因此开发人员不会随意创建新分支。这直接导致了同一个分支上需要承载大量的业务。而由于 git 的操作是本地化的,你可以随意创建分支(毫秒级操作)并行多个子迭代,迭代完毕且合并分支后,再删除分支标签。最后推送到远程服务器,他人并不知晓你创建过什么分支。

开源,共筑,影响力

革新总是艰难的。当 Linux 开发团队决定使用 git 作为版本管理的时候,社区反对声音并不小,理由是 git 太难用了。实际上,确实是这样的,Torvalds 也承认了这点。

技术服众还不够。Torvalds 的领导力是惊人的,他发动社区力量让大家投入到 git 的开发当中。随着开发的深入,git 命令变得更简单,更易用。另一方面,开源有助于集思广益,并且避免腐败。

后来的事,大家都知道了。git 逐渐被大众接受,为 git 提供托管服务的 github 于 2008 年 2 月上线,从此 git 点亮万家灯火。

github-free 图片版权许可

另外,2016 年 5 月,BitKeeper 宣布以 Apache 2.0 许可证开源。但人们说,太晚了。

今天的 Torvalds

Torvalds 与妻子 Tove 育有三名孩子。Tove 曾获得六次芬兰空手道冠军头衔。

2000 年,在时代 100 人:本世纪最重要的人物投票中,他位居第 17 名。

2004 年,他被评为世界最有影响力的人之一。

2010 年,宣誓成为美国公民。

2018 年 10 月,在休假反省一个多月之后,Torvalds 继续接管内核开发。Torvalds 在维护项目上一向言行激烈,不少人因此而受到伤害。他表示「对自己过去的行为表示反悔,对因为他的言行而受到伤害的人表示道歉」。

CC BY 3.0 图片版权许可

内推

现在,欢聚时代(YY Inc.)及虎牙(HUYA Inc.)所有岗位(包括但不限于 Android、iOS、Java、前端、大数据、机器学习、音视频算法、其他非技术岗均可)均可进行内部推荐。

发送简历到 zhujiajun#yy.com(#替换成@),并附上简历,即可内推。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 朋友整理的,放这里偶尔过来看看 一、基本介绍 首先,Git作为版本控制系统,他的原理与SVN为首的集中式版本控制系...
    allenzhan阅读 910评论 0 3
  • git[编辑]维基百科,自由的百科全书 git gitweb,git的一个Web界面。 原作者林纳斯·托瓦兹 开发...
    半片残枫阅读 407评论 0 0
  • 0. 前言 git在团队协作中有重要作用,是有必要进行系统学习的一门工具。本篇是笔者学习git操作的备忘笔记,主要...
    dounine阅读 924评论 0 2
  • Git内部培训课件 Git简介 什么是版本控制 版本控制系统(Version Control System,简称V...
    bluexiii阅读 17,487评论 2 18
  • 我们一行人今天早上3:50起床,去南阳参加刘芳老师‘弘扬中华文化,建设最美家庭’报告会,短短2个半小时,收益...
    简_6dc0阅读 258评论 0 0