Git简史
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
2005
Git 项目诞生。Linus Torvalds 为了替代 BitKeeper,仅用两周写出 Git 初版。
Git 1.0 发布,已支持基本的版本控制功能(分支、合并等)。
2007
Git 1.5.3 发布,新增 git stash,用户体验开始受到关注。
2008
GitHub 上线,极大推动了 Git 的流行和社区发展。
2009
Git 1.6.2 发布,命令调用方式由 git-xxx 改为现代的 git xxx,子模块支持增强。
2010
Git 1.7.0 默认启用颜色提示(color.ui),改善合并提示,用户体验提升。
2012
Git 1.7.10 引入 credential helper,支持用户名密码自动保存。
2013
Git 1.8.2 引入 git rerere 功能,记录并自动重用冲突解决方案;增强对 Windows 的兼容性。
2015
Git 2.4 发布,支持 push.followTags 等更灵活的配置项,提升了 CI/CD 场景下的易用性。
2016
Git 2.9 引入 interactive.diffFilter,自定义 diff 呈现;默认启用 core.precomposeUnicode,解决 macOS 下的编码问题。
2018
Git 2.16 针对大型仓库做了显著性能优化,git status 速度更快。
2020
Git 2.28 支持设置默认分支名:init.defaultBranch(如 main),开始推动远离 master 命名。
2021
Git 2.32 改进 sparse-checkout 支持,为 monorepo 场景带来更高效率。
2023
Git 2.40 支持更复杂的 sparse-checkout 规则,rebase 体验增强。
2024
Git 2.44 引入 scalar 工具,为大型仓库集中管理优化操作。提升 gc、packfile 等性能。
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统(参见 Git 分支)。