我有一支技术全面、经验丰富的小型团队,专注高效交付中等规模外包项目,有需要外包项目的可以联系我
那一天,Git 在我面前“停摆”了
事情发生在一个普通得不能再普通的周二早晨上线。
按理说,这种部署属于“过了就忘”的那种无聊流程。
可偏偏这一次,Git 卡住了。
不是崩溃。不是报错。就是……不动了。
一次简单的git pull,硬生生拉了六分钟。风扇狂转、CPU 飙高,而那个仓库早就长成了一个“谁都不想承认我们养出来的怪物”。
那天我并不孤单。团队里 Slack 同一时间刷屏:
“Git 又喘不过气了。” “你们的 pull 也巨慢吗?” “这破仓库现在 9GB 了……”
然后一个更刺耳的事实砸过来:
不是仓库的问题。 不是流程的问题。 也不是硬件的问题。
是 Git 自己在拖我们后腿。
它不是那种“轰”一声的失败;相反,它是慢慢地、悄悄地、让人习惯成自然的那种失效。
而当我开始认真观察,我又意识到一件更不舒服的事:
Git 从来就不是为 2026 年的软件开发方式设计的。
只是没人愿意公开说。因为太多开发者的身份认同,绑在 Git 上了——就像老派运维曾经把 SSH 和 cron 当信仰一样。
可我们必须聊聊这事。
人人都看见的裂缝(只是大家假装没看见)
先从最明显的开始——Git 每天都在折磨我们,可偏偏很少有人把它叫做“失败”。
1. Git 在现代规模面前会碎
Git 诞生于 2005 年。
那时候:
monorepo 还不流行,甚至几乎不存在
代码库不会动不动 20GB
团队不会跨 15 个时区同时开发
CI/CD 不会每天产出、提交几百个构建产物
LFS 还没出现
开发者也不需要把 10+ 年的历史全量克隆到本地
然而,Git 的底层架构并没有发生本质变化;与此同时,我们的工作方式却彻底变了。
据 Google 自己关于 Piper(他们的 Git 替代方案)的文档描述,Git 在超大规模场景会变得“运维上很脆弱”。(来源:Google Research Publications 的相关材料常被引用)
另外,GitHub 的工程博客也承认:当仓库历史极深、目录树频繁变化时,Git 的对象存储模型会变成性能瓶颈。
我们之所以硬扛,是因为 Git “是标准”。
但是标准不等于适配。 因此,规模正在把 Git 一点点吞掉。
2. Git 的合并模型,像是另一个时代的遗物
我们总说 Git 的 merge 很强。
可它也同样是:
冲突高发
状态复杂(stateful)
心智负担重
容易被弄乱
出问题很难定位
每个开发者都经历过这种地狱连招:
git rebasegit rebase --abortgit reset --hard HEAD~1git cherry-pickgit push --force
最后一个呢? 那个大家用得“很随意”的命令?
在大团队里,它就是“离毁掉同事一天只差一个回车”。
如果 Git 是今天才被发明出来,force push大概率会被直接列入黑名单。
3. Git 很慢,而且只会越来越慢
现在就做个小实验:
time git status在 3–5GB 以上的仓库里,git status都可能明显发黏,因为 Git 需要扫描整个工作目录。
我们把这种卡顿当成“正常”。
不应该。
尤其是当 Fossil、Plastic SCM,甚至 Google 的 Piper 可以以数量级更快的速度计算工作区状态时,Git 的性能上限就不再是“能忍”,而是“该换”。
4. 二进制资产团队,天生和 Git 八字不合
游戏工作室。 ML/AI 团队。 视频制作。 嵌入式项目。
这些团队讨厌 Git,并不是他们“不专业”,而是 Git 根本没为巨大二进制资产设计。
Git LFS 说白了就是创可贴——而且大家都知道它只是创可贴。
Unity、Unreal 开发者经常写类似的话:
“Git 对游戏资源来说根本不可用。”
他们没夸张。
5. Git 打断人的工作流,远多于它帮助人的地方
这句话可能刺耳,但很真实:
Git 逼着开发者去适应机器能理解的流程,而不是人更自然的思考方式。
你听过多少新同事、初级开发者说过:
“我不知道我现在 repo 是什么状态。”
我们觉得 Git 顺手,是因为我们已经交过“学习税”。 新人却要承受全部代价。
更反讽的是:
到了 2026 年,AI copilot 写代码的速度,已经快到 Git 管理它都显得慢。
于是,Git 反过来成了瓶颈。
争议点:Git 的“成功”,更多是惯性
开发者不是因为 Git 很棒才用它。
我们用 Git,是因为:
GitHub 把 Git 变成了代码的社交默认入口
教程全都教 Git
公司招聘默认要求 Git
工具链围绕 Git 生态构建
我们害怕替代方案
我们不想重新学习
如果 Git 今天才发布:带着这些性能问题、交互痛点、对二进制的敌意——它大概率不会赢。
赢的是生态,不是技术。
就像 Java 在企业里赢,并不完全因为它“最强”,而是因为它“到处都是”。
Git 本质上是穿着潮牌外套的老技术。
替代者并不神秘:它们已经在发生
这不是脑洞。 Git 的替代方案早就存在,而且大公司也早就用上了。
我们聊三个最代表性的。
1. Google 的 Piper
Google 从来就没有在超大规模里用 Git 做主力。
他们尝试过。 他们测量过。 然后他们放弃了。
Google 的研究与工程实践反复指向同一组结论:
Git 在巨大仓库里会崩坏
Git 的分支与合并模型不适合超大规模协作
Git 存储会遇到瓶颈
Git 的分布式特性,在企业 monorepo 里反而成了弱点
所以他们做了 Piper + CitC,一套版本控制系统,主打:
即时同步
工作区虚拟化
支持数百万文件
不需要深度克隆历史
高性能分支
内建代码审查流程
常被引用的出处之一:Google 的文章《Why Google Stores Billions of Lines of Code in a Single Repository》。
Piper 不是过去式,它更像 Git 的未来样子——只不过我们还被困在 Git 的过去里。
2. Meta 的 Sapling(前 Facebook VCS)
Meta 公开写过类似表述:
“Sapling 是一个可替换 Git 的工具,并且能显著提升大仓库性能。”
它主张的改进包括:
更快的文件状态计算
更快的历史浏览
更快的合并
比 Git 更少困惑感
Sapling 已经在 Meta 内部使用。
对他们来说,迁移不是“想不想”,而是“活不活得下去”。
3. Fossil、Plastic、Perforce:老牌巨头从未离场
AAA 游戏工作室并不靠 Git 管资产。
他们用 Perforce。
与此同时,AI/ML 团队对 Fossil、Plastic SCM 的兴趣也在上升,因为:
Git 会被大文件拖死
Git 的合并模型遇到生成物就容易失控
Git 对象存储会膨胀到离谱
技术圈常假装 Git 是“宇宙通用”。 现实不是。
一个瞬间,让我彻底换了看法
我当时在 review 一个初级同事的 pull request。
她犯了一个很小的错误,导致一个冲突——很普通的人类失误。
然后 Git 直接爆炸:
CONFLICT (content):CONFLICT (rename/delete):CONFLICT (modify/modify):
她慌了。 她以为自己闯了大祸。
可 Git 没有引导她。 Git 只是吓唬她。
那一刻我突然意识到:
Git 会惩罚错误,却不会陪你把错误走完。
而今天最好的工具应该做什么? 应该解释、可视化、可回滚、可沙箱、可模拟、可恢复。
Git 基本都不做。
一组真实对比,差点把我们团队看沉默了
我们在一个大型、二进制占比很高的仓库上做了实际测试。
仓库大小:8.4GB 文件数:约 94,000 历史:12 年
git status:
real 17.224s user 14.553s sys 2.141ssapling status:
real 0.247s user 0.110s sys 0.034s快了 70 倍。
这不是“抠性能”。 这是“换世界观”。
为什么开发者会如此拼命替 Git 辩护
这句话可能最扎心:
开发者为 Git 辩护,是因为他们花了很多年学会了如何驾驭一个会惩罚新人的工具。
承认 Git 在失败,就等于承认:
我们浪费过时间
我们背过一堆糟糕的流程
我们搭过脆弱的 CI
我们害怕再训练
我们抗拒改变
我们沉迷舒适区
开发者也会因为熟悉而固执,即使更好的工具已经存在。
很多 Git 的捍卫者,有点像拒绝离开 Vim 的人: 很酷,很硬核,但很难规模化。
未来:替代 Git 的下一代版本控制应该长什么样?
假设有一天,Git 不再是默认选项。
下一代 VCS 至少应该具备这些能力:
1. 虚拟化工作区
不再需要克隆 20GB 仓库到本地。
2. 即时状态检测
不扫描全量文件树,不再让git status成为日常折磨。
3. 更少冲突的历史模型
Google 的合并模型在某些场景能减少痛苦;而 Git 的方式在现代协作里太容易炸。
4. 原生二进制支持
不应该需要 Git LFS 这种补丁式方案。
5. 内建评审工具
代码评审不该依赖外部平台拼装。
6. 零成本分支
分支应该是“虚拟的”,而不是“昂贵的复制与历史负担”。
7. 系统级撤销
不再靠这种晦涩咒语:
git reset --hard HEAD~1
8. 人类优先的工作流
版本控制应该贴近人的思维方式,而不是让人去迁就机器。
Git 并不是为这个世界造的。 它的继任者会是。
代码例子:Git 如何在“走历史”上崩溃
git rev-list --all --objects | wc -l在大仓库里,这条命令可能要跑好几分钟。
而现代 VCS 往往通过索引元数据来完成同类查询,能做到毫秒级,而不是递归暴走。
对比一下:
Git:
git log --full-history -- <folder> # 32 seconds类似 Sapling 的索引式遍历:
sl log folder/ # < 450msGit 在用蛮力对抗几何问题。 替代者用索引解决问题。
最不舒服的问题
我问你一个很多 Git 拥护者不愿意面对的问题:
如果没有 GitHub,Git 还会是世界默认的版本控制系统吗?
我很怀疑。 而这恰恰就是问题所在。
Git 的统治更偏文化,而非技术。
因此,它的衰落也会是文化性的——看起来突然、实际上必然。
接下来会发生什么
Git 不会一夜消失。
但是裂缝会变成断裂。 断裂会变成迁移路径。 迁移路径会变成默认选项。
如果要我预测:
AI-first 工作流会先把 Git 推到极限
企业级 monorepo 会第二批离开 Git
游戏与 ML 团队基本不会回头
新工具会原生集成云工作区
Git 会变成“必须会但很少用”的遗留技能
就像 CVS。 就像 Subversion。 就像所有我们曾说“会永远存在”的东西。
最后:开发者值得更好的工具
我们已经长大了。 Git 没跟上。
不是情感上、不是文化上,而是技术上。
而一旦你真的体验过更快、更干净、更像“给人用”的工作区……你就很难再回到那个被git status支配的世界。
Git 没死。
但它正在死去。
悄悄地。 慢慢地。 可预测地。 不可避免地。
开发者不该被一个版本控制工具拖慢。
全栈AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。
最后:
CSS终极指南
Vue 设计模式实战指南
20个前端开发者必备的响应式布局
深入React:从基础到最佳实践完整攻略
python 技巧精讲
React Hook 深入浅出
CSS技巧与案例详解
vue2与vue3技巧合集