Linus Torvalds 回顾 Git 20 年历程
17611538698
webmaster@21cto.com

Linus Torvalds 回顾 Git 20 年历程

技术人生 2 83 2天前
特色图片:Linus Torvalds 回顾 Git 20 年

导读:Linus Torvalds 知道开发人员对 SCM 的需求:性能、防止数据损坏的保障以及分布式工作流。

20年前,Linus Torvalds编写了Git分布式版本控制系统。2005年4月7日,他进行了第一次提交。

为此,GitHub 在四月初举行了庆祝活动。GitHub 的软件工程师Taylor Blau对 Torvalds进行了一次采访

第一个问题提供了一些关键的背景。托瓦兹是否还期望 20 年后还能使用和谈论 Git?

Linux 之父回答说,他原本预计自己还会继续使用Git,但“可能不会再提它”。令他惊讶的是,Git 不仅坚持了下来,还逐渐成为全球开发者源代码控制管理 (SCM) 领域的主导——因为“我把它视为解决我的问题的解决方案”。

那么接下来发生了什么?托瓦兹利用这次采访反思了所有学到的点滴经验——关于网络效应、工作流程以及简洁在解决问题中的重要性。他分享了自己的遗憾,但也表达了对未来的希望。

在采访结束时,他提到正在权衡 Git 是否真的改变了编程行为本身。

Linus Torvalds - GItHub 的 Git 20 周年纪念视频截图

不断变化的动态


回首往事,托瓦兹记得 Git 最初并没有受到人们的无条件喜爱。


但是 2008 年,“一些奇怪的 Web 开发者开始大规模使用 Git”。三年前,一群开发者发布了一个全新的 Web 应用框架,名为 Ruby on Rails,托瓦兹说:“我当时根本不知道它,我现在甚至都不知道 Ruby 是干什么的。”


称他们为“奇怪”似乎表明了他对这种“全新类型的 Git 用户 — — 至少,我以前从未见过……”的惊奇之情。


Ruby_On_Rails_Logo 的屏幕截图(由 Jamie Dihiansan 制作)


“这很明显,突然间你就看到了这么多年轻人,他们以前从未使用过源代码管理!Git 是他们使用的第一个工具,也是他们正在使用的项目所使用的工具——所以它几乎成了默认工具。”


Torvalds 仍然相信他们的到来“改变了局面,因为之前那些一辈子都在用着完全不同的 Git 的老前辈们已经不在了。” 这种突如其来的变化看起来简直滑稽可笑。


三年之内,“我不再抱怨‘Git 太难了’,而是开始看到有人抱怨‘老项目在 CVS 里,我该怎么办?’”


这最终导致了网络效应的产生,新项目默认采用 Git,只是为了与所有其他项目保持兼容。Torvalds 说,这或许解释了 Git 人气飙升的原因——在接下来的几十年里,这不仅对 Git 构成了挑战,也“对任何认为自己有更好工具的人”构成了挑战。


一份报告甚至声称 98% 的项目使用了 Git,尽管 Torvalds 说:“我不知道这是否属实。但它使用量确实很大! ”

还有其他选择(比如PijulJujutsuPiper)。他试过吗?Torvalds 已经准备好了答案。“没有。”

因为他已经有 Git 了,为什么还要这么干呢?

2005年


早在 2007 年, Torvalds 就在 Google 上发表过关于 Git 的早期演讲。有趣的是,他特意着重感谢了 BitKeeper——Linux 从 2002 年到 2005 年一直在使用这个版本控制系统。

在那次演讲中,Torvalds 对 BitKeeper 协调和合并广泛分布的贡献的能力表示赞赏。“BitKeeper 不仅是我觉得第一个值得使用的源代码控制系统,它还教会了我为什么使用 BitKeeper,以及如何实际操作……我们在 Git 中使用的很多流程都直接来自于从 BitKeeper 学来的流程。”

“替代方案之一是恢复使用 tarball 和补丁,但现在已经没人喜欢这样了。”

Torvalds 因为在 10 天内编写出 Git 而受到赞誉。但回顾今年四月,他回忆道:“当我开始写作时,我实际上已经思考这个问题四个多月了,思考什么对我有用,思考如何才能做出比 BitKeeper 更好的东西。”

他委婉地描述了自己的想法:“我不能使用 CVS,因为我非常讨厌它,所以我要做我属于自己的事。”

但回顾过去,托瓦兹强调他坚持了一些简单的设计目标。

  • 性能: Linux 内核是一个庞大的项目,一些版本控制工具处理每个补丁需要长达 30 秒,“这对我来说是不可接受的”,因为更快的结果意味着更快的修复。(“这实际上关乎生活质量。”)
  • 无损坏: 有人说使用SHA-1哈希算法是个错误——但 Torvalds 指出,它并非出于安全考虑,而是为了防止数据损坏,他们在使用 BitKeeper 时就遇到过这种情况。正如 Torvalds 在 2007 年所说:“如果你不能保证我放入 SCM 中的内容最终结果完全相同,那么你就不值得使用。”
  • 支持分布式工作流: Torvalds 在 2025 年强调了另一个设计目标:让代码仓库的复制变得简单,并且每个代码仓库都完全相同。“这是我非常想要的。我没想到竟然还有这么多人也想要。”


托瓦兹在 2007 年就表示说:“版本管理工具要用起来非常简单”,并称其“只有 80,000 行代码,而且大部分是用 C 语言编写的”。

2025 年,托瓦兹表示说,如果该代码库有一个主题,那就是“让我们开始工作吧,因为我还有另一个我认为更重要的项目需要回去。”

Linus Torvalds - 2007 年 Google 关于 Git 的演讲截图

Torvalds 2007 年在 Google 演讲Git时的截图

回顾一下,是否希望自己做出哪些不同的决定?


托瓦兹承认他对使用 SHA-1 感到遗憾,“因为我认为它造成了很多毫无意义的混乱,人们试图同时支持 SHA-256 和 SHA-1。”


Git 的代码在 2020 年进行了重构,“现在可以处理多种哈希类型,其中 SHA-256 是第二种受支持的类型”。

Torvalds 这样表示道:“我理解这样做的原因,但我确实认为这基本上毫无意义。我认为当时并没有太大的实际需求。只是人们有点担心……所以,我认为很多努力都白费了。”

当后来被问及这些年来他关注的 Git 变化时,Torvalds 重提了这个话题。“我记得几年前我还在关注的最大变化就是多重哈希值。这对我来说真的非常痛苦。”

但是 Git 改变了人们的编码方式了吗?Torvalds 一度似乎反思了之后发生的一切,他说 GitHub 和其他托管服务“让我们清楚地知道,现在创建这些随机的小项目是多么容易,而以前的方式是前所未有的。”

这也导致了许多“一次性的事情,有人做了一些事,然后把它留下来,现在它还在那里”。托瓦兹不愿透露这是否从根本上改变了我们所知的软件开发——但他承认,“它改变了细节。在某种程度上,它使协作变得更容易了。”

“这使得这些一次性项目变得更容易,如果它们不起作用,那就不起作用,如果它们起作用了——现在你可以与其他人一起工作。”

感谢 Junio


托瓦兹这样坦承说道,对于过去二十年所有使用 Git 的项目来说,Git 的真正英雄是长期维护者滨野淳夫(Junio Hamano),“20 年后,你绝对应该和 Junio 交谈,而不是和我交谈。”

早在 2007 年谷歌演讲时,Torvalds 就称 Hamano 是“真正让 Linux 更容易被普通人接受的人。当然还有很多人参与其中。”

这么多年过去了,托瓦兹说自己获得了不少赞誉。他还记得大女儿刚上大学的时候,她告诉他,在她所在的计算机科学实验室里,他因为开发了 Git 而不是 Linux 而出名,“因为那里实际上什么都用 Git。”

“是的,这有点荒谬,我花了四个月的时间来维护它。”

结论


我发现了一个惊人的秘密。Torvalds 有时会检查自己的 Git 历史记录文件,并分享了一些关于他使用模式的统计数据。“结果显示:我只使用了五个 Git 命令。”

git versiongit blame 和git log就是其中三个。所以从这个意义上来说,我算是 Git 的普通用户了。

图片

(Torvalds 使用的另外两个 Git 命令是 git commit 和 git pull。)

当被问及对未来的盼望时,托瓦兹指出,虽然许多网站确实提供了错误跟踪功能,但“我希望看到这些功能更加统一......错误跟踪和一般问题能够在托管网站之间更好地共享。”

但这一切又引出了一个新问题,Linux与Git。我们是不是该迎来 Torvalds 的另一个大项目了?“哦,这个问题么,”他笑着说。他以前也听过这个问题——但答案是否定的。

他做的所有项目,“都是因为我找不到比别人更好的东西,所以不得不自己做。我开始使用 Linux 是因为我需要一个操作系统,但没有任何东西能满足我的需求,我开始使用 Git 也是出于同样的原因。”

十年前,托瓦兹甚至为潜水员编写了自己的程序(因为他也是一名狂热的休闲潜水员)。“但我更喜欢别人帮我解决问题,”他告诉采访者。

“所以我不得不提出一个新项目,这实际上是世界的失败。但对我来说,过去 20 年里世界并没有失败。”图片

作者:场长

评论