2002 年,Linux 内核——拥有数千名贡献者和数千条并行的变更流——采用了专有的 BitKeeper 进行版本控制。2005 年,内核社区与 BitKeeper 开发商之间的关系破裂,该工具的免费使用资格被撤销,这个全球最大的协作软件项目就此失去了它的核心工作工具。

一个为速度和数千条并行分支而构建的分布式版本控制系统——每个克隆都是一个完整的仓库,其设计仿照内核自身的数据结构。

Torvalds 亲自编写了第一个版本:首次提交于 2005 年 4 月 7 日落地,提交信息为“Initial revision of "git", the information manager from hell”(“git”的初始修订版,来自地狱的信息管理器)——寥寥几个 C 文件,提供了七个命令。设计目标汲取自 BitKeeper 的经验教训:速度、简洁的设计、对非线性开发的有力支持,以及完全的分布式。2005 年 7 月 26 日,他将维护工作移交给 Junio Hamano,Git 1.0 于 2005 年 12 月 21 日发布。

Git 成为大多数开发者使用的版本控制系统:到 2022 年,近 95% 的开发者报告将其作为主要版本控制系统,而各大软件托管平台——GitHub、GitLab、Bitbucket——都围绕它构建。一个为某个项目的工作流程而编写的内部工具,成为了全球协作软件开发的底层基础。

Linux 内核由数千名贡献者开发,产生数千条并行变更,这使得版本控制异常困难。2002 年,该项目采用了 BitKeeper,这是一个专有的分布式系统,其开发商允许免费使用。2005 年,这一关系破裂,免费使用资格被撤销,内核社区——尤其是 Linus Torvalds——不得不替换这个承载其全部工作的工具。

Torvalds 的回应是自己编写替代品。2005 年 4 月 7 日的首次提交带着一丝调侃宣告了自己的诞生:“Initial revision of "git", the information manager from hell.”(“git”的初始修订版,来自地狱的信息管理器。)它是一小组 C 文件,提供了七个底层命令,围绕与内核相同的理念构建:速度优先、设计简洁、为非线性开发提供廉价的分支,以及完全的分布式,使仓库的每一份副本都携带完整的历史。

它很快就不仅仅是一个私人工具了。Junio Hamano 在数周内加入,并于 2005 年 7 月 26 日接手维护——Torvalds 从未打算永远照管它——Git 1.0 于 2005 年 12 月 21 日发布。此后它完全走出了内核的范畴:到 2022 年,近 95% 的开发者报告将 Git 作为其主要版本控制系统,而组织现代开源项目的托管平台,包括 GitHub 和 GitLab,其核心都是 Git 服务。

它将版本控制视为一个性能问题:速度是第一目标,因为一个让人等待的工具,就是一个人们会绕开的工具。

完全的分布式意味着每位开发者都携带完整的历史——没有单点故障,也没有在想法与本地实验之间的权限关卡。

分支是一等操作,而非昂贵的副作用,因此并行的工作线成为尝试新事物的廉价、常规方式。

它是针对当时可用的最严苛真实工作负载——内核的规模——而构建的,而非针对市场平均水平,这正是它能够如此广泛通用的原因。

失去一个你依赖的工具可能是一份礼物。Torvalds 针对自己最严苛的用例——庞大的历史、数千条并行分支——进行构建,而一个适合最严苛用例的设计,往往也适合所有人。

自 2005 年 7 月的那次交接以来,Junio Hamano 一直是 Git 的维护者,Torvalds 仍在贡献代码。二十年过去,GitLab 在 2025 年对首次提交的回顾中,恰如其分地评价了“来自地狱的信息管理器”这句话——它是如今几乎所有软件都赖以运行的基础设施层的奠基性玩笑。BitKeeper 本身于 2016 年开源,如今只是一个脚注;Git 才是默认。内核项目的危机应对,就采用率而言,最终成为了有史以来最成功的内部工具。

从这里,追溯依据

参考来源

  1. A Short History of Git Pro Git book (git-scm.com) · git-scm.com
  2. A journey through Git's 20 year history GitLab blog · about.gitlab.com ·
  3. Git Wikipedia · en.wikipedia.org