转眼间 Git 诞生 20 周年了!
为了给 Git 庆生,如今鲜少公开露面的 Linus 罕见接受采访,更多幕后故事被更进一步展开。

2005 年 4 月 7 日,Linux 之父 Linus Torvalds,提交了 Git 的首个版本。
凭借开源、分布式、本地可控等特点,Git 快速从一个小型的个人项目发展成为目前全球最广泛使用的版本控制系统。
后续随着 GitHub、GitLab 等平台共同推动,Git 彻底改变了世界构建软件的方式,如今已经成为“开源的默认语言”。
在 AI 爆发的时代,Git 也是 AI 开发不可或缺的一部分。几乎所有知名的 AI 库和模型都在 GitHub 上维护。
不过鲜为人知的是,这个影响全球的系统,最初版本的开发,仅用了 10 天时间 ——
当时 Linux 社区使用的 BitKeeper 由于授权被取消,不再免费提供给开源社区。于是,创建了 Linux 的传奇大佬 Linus Torvalds 再次出马,Git 由此而来。

4 个月思考 + 10 天执行
对于 Linus 本人而言,“10 天开发 Git”这个传说其实有点夸张。
10 天只是最后写代码的时间,构思 Git 最初的框架实际用了 4 个月。
当时,Linux 开发社区使用的商业软件 BitKeeper 在授权上出现了一些问题,将不再免费提供给开源社区使用。
为了解决自用问题,Linus 开始想打造一个同类的工具。
实际上,想要复刻一个 BitKeeper 并不难,比如澳大利亚的 Tridge 基本是对 BitKeeper 的逆向,但这违反其规定。
从 2004 年底,Linus 开始思考如何做出一个比 BitKeeper 更好、但实现方式不同的工具。
它最初的设计目标完全参考 Linus 个人的开发需求,专为处理 Linux 内核这样大规模项目设计。
我会做一些对我有用的东西,不关心其他人。

首个版本最核心关注点如下:
首先在性能上,Linus 的一个目标是 Git 能在半分钟内应用大量补丁,50、100 个那种。
他认为速度是生产力的关键。一方面,要确保常见操作几乎实时完成,另一方面如果操作是即时的,发现错误时就要立即看到结果并继续修复。
其次,它采用分布式架构。
完全分布式的特性最终使得很多事情变得非常容易,这是 Git 与之前几乎所有 SCM(源代码管理)的区别之一。
在设计上,每个存储库都是相同且平等的,可以完全本地工作、不依赖网络连接,并简化了项目分享和协作。
最后,Linus 引入了 SHA-1 哈希用于检测数据损坏、确保内容可靠性。
尽管人们觉得使用 SHA-1 哈希是一个巨大的错误,但是对我来说,SHA-1 哈希从来都不是关于安全性,而是被用于发现数据损坏的。
正是这两三个核心设计理念,促成了 Git 的诞生,也解释了为什么 Git 的底层实际上相当简单。
我把它比作 Unix。Unix 的一个核心理念就是:一切都是一个过程、一切都是一个文件,you pipe things。
而在执行方面,Linus 的做法也很值得大家参考:
最初阶段有一个清晰的想法,先不管之后是否能具体实现。
Git 的首个版本,只有大约一万行代码,“甚至可以一口气读完”。

最初几年,Git 也面临一些体验上的争议。它一开始仅仅是 plumbing,根本没有用户界面。需要手动运行 commit-tree 命令、手动将生成的 SHA-1 哈希写入 head 文件、没有 git commit 这样用户友好的命令。
毕竟 Linus 在最初设计时也没 care 这些使用体验方面的问题。
Junio Hamano 是改善 Git 使用体验的核心人物。
在初版本发布 4 个月后,Linus 就将项目转交给他维护。采访中 Linus 也表示,Junio 的“品味”和长期奉献是 Git 能够成功的关键。
我做 Git 完全是出于自己的原因。在这 20 年中,我只花了 4 个月时间在上面。真正的功劳属于 Junio 和所有其他参与 Git 的人,他们现在做的比我多得多。
大概从 2007 年-2010 年,Git 逐渐获得越来越多人认可,特别是当时的新一代开发者,都会将 Git 作为首选工具。
Linus 认为,让 Git 真正流行的关键原因是 Ruby on Rails 社区的采用。后面随着 GitHub 平台出现,进一步利用 Ruby on Rails 社区的用户基础、简化 Git 使用体验、添加社交属性,让 Git 的影响进一步扩大。
由此,Git 从一个个人小众工具,逐步发展为影响全行业的核心范式。
毒舌暴躁的开源传奇大佬
最后,再来简单回顾下 Linus Torvalds 的传奇人生。
他 1969 年出生于芬兰,现在已经 56 岁了。

他一个人写出了两个改变世界的项目:Linux 和 Git。它们几乎影响了整个 IT 和软件产业的基础架构。
而且过程都非常相似:
不满于当前系统 → 自己手搓一个开源免费版本 → 不断扩展功能受到更多开发者关注 → 最终在全球产生广泛影响。
1991 年初,当时还是赫尔辛基大学学生的 Linus 开始对操作系统产生兴趣。他使用的是基于 UNIX 的 Minix 系统,但对其功能限制感到不满。他想要一个能够充分利用他的新 Intel 386 电脑的操作系统。
1991 年 8 月 25 日,Linus 在 comp.os.minix 新闻组发布了一条著名的消息:“我正在做一个(免费的)操作系统(只是个爱好,不会像 GNU 那样庞大专业)……”这被认为是 Linux 项目的正式诞生。
最初 Linux 只是一个终端模拟器,Linus 用它来访问大学的 UNIX 服务器。随着时间推移,他不断扩展其功能,添加了文件系统支持和设备驱动程序。
关键转折点是 Linus 决定采用 GNU 通用公共许可证 (GPL) 发布 Linux。这使得 Linux 成为一个真正的自由软件,允许任何人查看、修改和分发代码,只要他们同样以 GPL 方式分享修改。
1992 年,Linux 与 GNU 项目的工具结合,形成了完整的操作系统。这种结合有时被称为 GNU / Linux。
随着互联网的普及,世界各地的开发者开始为 Linux 贡献代码。Linus 采用了分散式开发模式,审核并整合来自全球的贡献。
从 1994 年开始,Linux 版本 0.95 发布,商业公司如 Red Hat 开始围绕 Linux 创建商业产品和服务。
今天,Linux 已成为互联网基础设施的核心,为大多数网站服务器、Android 智能手机和超级计算机提供动力。尽管项目规模已经庞大,Linus 仍然担任最终决策者,管理着 Linux 内核的开发方向。
不过,除了技术和项目风靡全球,Linus 的臭脾气也是在技术圈广为人知。
此前在有一次公开演讲中,因对 NVIDIA 拒绝为 Linux 提供良好驱动支持的态度表示不满,Linus 直接对着摄像机竖起中指说:
NVIDIA,f**k you!
这一幕如今也成为了技术界的经典场景。

此外,他本人也相当毒舌,看到不好的代码就直接在代码评审中开喷。
这不仅是垃圾,而且是有史以来最蠢的垃圾。
你的代码很烂,如果我是你,我就躲到角落里去哭,然后考虑转行。
对 C++ 颇有微词:C++ 是一种可怕的语言。它在设计上有着根本性的缺陷… 那些宣称 C++ 比 C 好十倍的人是在撒谎。
以及 Git 在俚语中的意思是“讨厌鬼”。
如此种种,非常多,就不列举了。
不过在 2018 年,Linus 公开道歉,表示要洗心革面,调整自己的沟通方式。
所以近年来,他脾气愈加温和:仍旧直率但是明显减少了个人攻击和侮辱性语言。
好是好,就是大家能看的乐子也少了(bushi)。
参考链接:
本文来自微信公众号:量子位(ID:QbitAI),作者:明敏,原标题《Git 诞生 20 周年!大佬 Linus 十天写出的项目,彻底变革全球软件开发》
Read More