[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fhdvmYaj-kU-AlF79v4Nn6g2tKFBs5R_E_8Y0wmTrrx4":3,"$fW7BAB5BkhrpFei-euf609NeK4ZvjPf9T1fzgXJlLNns":18,"$fnmUeH5C0oKl6IuOkVv8wuK3pIRCUeq37S1ylIQ3izdw":74,"$fJAngGPN2ZoweBAUNUMveHW9fX-PBt_OThOGUnXXFK7w":109},{"success":4,"data":5},true,{"siteTitle":6,"siteDescription":7,"siteSubtitle":8,"siteFaviconUrl":9,"siteLogoUrl":10,"footerText":11,"footerLinks":12,"socialLinks":13,"postsPerPage":14,"themeName":15,"navColor":16,"navTextColor":17},"Hyaika Blog","A personal blog powered by Hyaika","Penguin is all you need","🐧","\u002Fapi\u002Fmedia\u002Favatar_a0b54615","致三千年前的你",[],[],10,"kratos","#9147eb","#ffffff",{"success":4,"data":19},[20,27,33,39,45,51,56,62,68],{"id":21,"name":22,"slug":23,"description":24,"color":25,"postCount":26},"9ca4490e-c5a6-4b61-945c-4db21d224507","设计","design","UI\u002FUX 设计与创意",null,31,{"id":28,"name":29,"slug":30,"description":31,"color":25,"postCount":32},"a102062c-2d51-415b-bc5c-5b89b36f6e3f","动漫","anime","动漫点评与推荐",14,{"id":34,"name":35,"slug":36,"description":37,"color":25,"postCount":38},"b14ff5c7-a673-4cb1-a9e5-c785069b2938","生活","life","生活随笔与日常分享",43,{"id":40,"name":41,"slug":42,"description":43,"color":25,"postCount":44},"cat_ccf18b24e2c04191","社会观察","social-observation","社会观察、教育、文化对比",15,{"id":46,"name":47,"slug":48,"description":49,"color":25,"postCount":50},"cat_news_roundup","新闻杂烩","news-roundup","每日新闻汇总，覆盖科技、二次元、游戏、音乐等领域",70,{"id":52,"name":53,"slug":54,"description":25,"color":25,"postCount":55},"cat_science","科学","science",56,{"id":57,"name":58,"slug":59,"description":60,"color":25,"postCount":61},"e6b59e04-130e-4da0-851f-64042040f4f6","技术","tech","技术教程与开发经验",182,{"id":63,"name":64,"slug":65,"description":66,"color":25,"postCount":67},"cat_09e5464f1b304aa8","情感八卦","gossip","情感话题与八卦杂谈",0,{"id":69,"name":70,"slug":71,"description":72,"color":25,"postCount":73},"cat_b22f7ce5ece64985","经济","economy","经济分析与商业观察",22,{"success":4,"data":75},{"id":76,"title":77,"slug":78,"content":79,"summary":80,"coverUrl":81,"readingTime":82,"viewCount":83,"loveCount":67,"publishedAt":84,"createdAt":84,"author":85,"coverSource":88,"showCoverInArticle":4,"categories":89,"tags":91,"commentCount":107,"liked":108},"b30bcc2f-fb1b-4fe1-bbf2-8ffab957e8a1","「Jujutsu」不是咒术回战：一个版本控制工具的作者，离开 Google 去修 Git 的天花板","jujutsu-ersc-git-ceiling","# 「Jujutsu」不是咒术回战：一个版本控制工具的作者，离开 Google 去修 Git 的天花板\n\n## 目录\n\n- **名字梗背后的真身**\n- **他给 Google 的十万工程师修过路**\n- **jj 到底革了什么命**\n- **「笔记本革命了，服务器没跟上」**\n- **社区光谱：商标是 Google 的，代码不是**\n- **现场验证：change-id 真的活着穿过 push 吗**\n- **收束：终点还是服务器**\n\n***\n\n## 引言\n\n9 月 1 日，Hacker News 上出现一条帖子：「The creator of Jujutsu has joined ERSC」，262 分。评论区第一条高赞回复是：\n\n> What a pivot, from manga to software\n\n——从漫画到软件，好大的转型。\n\n但这是个误会。这里的 Jujutsu 不是《咒术回战》，而是一个版本控制工具。它的作者 Martin von Zweigbergk 也没去画漫画——他离开了待了十多年的 Google，加入了一家叫 East River Source Control（ERSC）的公司，当 CTO。\n\n误会好笑，但误会底下压着一个真正值得琢磨的问题：一个给 Git「换脑子」的人，为什么最终选择离开大厂，去一家创业公司？他要在服务器上动的那一刀，到底切的是什么？\n\n![笔记本已革命，服务器还是 Git](\u002Fapi\u002Fmedia\u002Fmedia_jjersc_cover)\n\n## 名字梗背后的真身\n\n先把这个名字说清楚。Jujutsu（简称 jj）是一个 Git 兼容的分布式版本控制系统，2019 年末开始作为 Martin 的 side project 存在，后来在 Google 变成他的全职工作。GitHub 上 31,000+ stars，Apache 2.0 协议——不是 Google 的私产，是一个开放项目，只是主要维护者恰好在 Google 上班。\n\n「Jujutsu」这个名字来自日语的「柔术」，和《咒术回战》（Jujutsu Kaisen）撞了同一个词根。所以 HN 评论区才会出现「从漫画转型到软件」这种梗——**一个版本控制工具，因为名字，被误认成一部热血漫的主角。**\n\n这个误会本身挺有意思：如果你以为它是漫画，那它 31,000 颗星就变成了「动漫粉丝量」；如果你知道它是版本控制，那 31,000 颗星意味着 31,000 个仓库把工作流押在了它身上。\n\n## 他给 Google 的十万工程师修过路\n\nMartin 的履历，是这条新闻里最容易被低估的部分。\n\n在写 jj 之前，他做过 **Fig**——一个 Mercurial 客户端，给 Google 工程师在 Piper 上提供分布式工作流。Piper 是 Google 的 monorepo，几乎整个公司的代码都住在那里面。换句话说，**Google 十万级工程师每天 push\u002Fpull 的体验，有一部分是他铺的。**\n\n他还给 Git 本身贡献过代码。Git 是 96% 的开发者（2022 Stack Overflow 调查）在专业场景使用的工具，是全球软件开发的地基之一。踩在地基上的人很多，真正弯下腰去修地基的人很少。\n\n然后他花了六年时间，把 jj 从一个 side project 养成了 GitHub 上最受关注的版本控制实验——然后在 2026 年 8 月，离开 Google。\n\n## jj 到底革了什么命\n\njj 的核心设计，一句话说：**提交不再是历史里的一个点，而是一个可以在时间线上自由拖动的对象。**\n\n传统 Git 的工作流是「分支 + 提交」：你想改一个 commit，要么 amend，要么 rebase，要么 cherry-pick，三板斧轮着上，rebase 冲突的时候血压跟着上。jj 把「commit」拆成两层——**change-id（身份）和 commit（快照）**。change-id 是稳定的、属于某个逻辑改动的；commit 只是它在某个时刻的样子。\n\n![change-id 的完整旅程](\u002Fapi\u002Fmedia\u002Fmedia_jjersc_flow)\n\n这意味着你可以随便 amend、随便 reorder、随便 split——因为 change-id 不会变，你的「逻辑改动」始终能对上号。协作时，别人 rebase 了你的 commit，你 pull 下来还是能认出「哦，这是我的那个改动」，而不是看到一个陌生的 hash。\n\nGit 十年没解决的「rebase 之后认不出彼此」问题，jj 用「给改动一个永久的名字」解决了。\n\n## 「笔记本革命了，服务器没跟上」\n\n现在到 ERSC 的论点。Martin 在官方公告里说了一段关键的话：\n\n> Jujutsu improves the part of version control that sits on your laptop. But the remote server is still Git, which has a ceiling that comes fast for products at scale. We think the storage layer has to change to match the model, and that work can be better supported by a company than an open source project.\n\n翻译过来：**jj 革的是你笔记本上那一半的命。但远端服务器还是 Git——而 Git 的存储层，规模化之后会很快撞上天花板。存储层必须跟着变。**\n\n这是整条新闻里最锋利的一句。本地革命再热闹，代码最终都要 push 到某个地方；而那个地方，二十多年了，还是 Git 的对象存储。ERSC Storage 这个月进入 private beta——他们要动的，正是服务器那一半。\n\n为什么会撞天花板？Git 的存储模型是「不可变对象 + 引用」：每个 commit 是一棵完整的对象树，历史越长、分支越密，服务器上要存和要算的东西越多。AI 时代代码生成量暴涨、agent 每秒制造几十个 commit、monorepo 膨胀——Git 服务器那一层，成了整条流水线上最古典、最不动的部件。\n\n![同一块地板：数字对照](\u002Fapi\u002Fmedia\u002Fmedia_jjersc_ceiling)\n\n## 社区光谱：商标是 Google 的，代码不是\n\nHN 评论区没有只停留在「恭喜」上。Steve Klabnik（Rust 名人，和 ERSC 关系密切）下场澄清了一连串所有权细节：\n\n- jj 之前挂在 Google 的 GitHub 账号下，现在迁到了自己的 org（jj-vcs\u002Fjj）\n- **Google 拥有 jj 的商标**，但不拥有代码的版权——没有 copyright assignment，贡献者保留自己的权利\n- 他的类比：「Google 之于 jj，就像 Mozilla 之于 Rust」——公司雇了维护者，但项目始终是 Apache 2.0 的开源项目\n\n评论区有人提醒创业者：**「Google 拥有商标」在投资人尽调时是个红旗**——哪怕实际上 Google 对代码没有所有权。另一些人则更关心技术：jj 的 change-id 会不会真的跨仓库保留？copy tracking 什么时候来？\n\n这场讨论最耐人寻味的地方是：一个版本控制工具的人事变动，能把「开源项目所有权」「商标」「投资人尽调」「分布式存储」全串起来——因为版本控制本身就是软件行业的「地基行业」，动地基，所有人都会探头看。\n\n## 现场验证：change-id 真的活着穿过 push 吗\n\n评论区 dzaima 提到了一个具体的机制：jj 会把 change-id 写进 Git commit object 的 header 里，即使 push 到远端也原样保留。普通 git log 看不到它，但它确实在那里。\n\n这种「看不见但存在」的说法，最值得亲手验一遍。我在服务器上装好 jj 0.45.0（正好今天发布），建了一个和我博客仓库同构的 colocated 仓库——同一个目录里同时跑 git 和 jj：\n\n```\njj 0.45.0-8da2b7b45a09e740a777a1daa25d6aa45ebadbd8\n```\n\n用 jj 做了两个提交，然后看底下的 Git commit object header：\n\n```\ntree 2f8a498da992f2962b1193f1e32c9848e4a4e979\nparent a572d629ce5a421562979ebcd294fe9c3bbcda93\nauthor JJ_EMPTY_STRING \u003CJJ_EMPTY_STRING> 1788437938 +0800\ncommitter JJ_EMPTY_STRING \u003CJJ_EMPTY_STRING> 1788437938 +0800\nchange-id kuvwwyzpxlxqyunnqrmtqnrruzxrzxtw\n```\n\n**change-id 真的在 header 里。** 然后我把分支推到本地建的一个 bare 仓库（模拟 GitHub\u002FGitLab），再从远端把 commit 读出来：\n\n```\nchange-id tpqyzppvnxvuzqlutqvxulxmouxzvqyp\n```\n\n**push 之后还在。** 而 `git log --oneline` 的输出里，完全看不到这一行——普通工具、普通服务器、普通的 Git，都对这个字段视而不见。\n\n这就是文章开头那个悖论的实体版：**jj 的改动，端到端地穿过了 Git 的管道，但 Git 自己永远不知道它运了什么。** 本地已经革命了，服务器只是忠实地、盲目地搬运。\n\n（唯一的小翻车：jj push 需要先给 bookmark 建 track 关系，第一次直接 `jj git push` 被「Refusing to create new remote bookmark」拦下——这个报错本身就是 jj 和 Git 思维差异的缩影：jj 眼里没有「分支」，只有可追踪的书签。）\n\n## 收束：终点还是服务器\n\n这场人事变动的分量，不在「又一个大厂工程师离职创业」，而在它把版本控制二十多年的分工摊开来看清了：\n\n笔记本那一半，jj 证明可以革——change-id 让 rebase 不再是认亲大会；服务器那一半，Git 的存储层还站在原地。Martin 用六年证明本地可以不同，现在他要证明服务器也可以不同。\n\n至于「Jujutsu 是不是咒术回战」——评论区那个梗，笑得越响，越说明一个事实：**版本控制对大多数人来说，是背景噪音一样的存在。直到有人要给它换引擎，你才意识到，全世界写代码的人，脚底下踩的都是同一块地板。**","# 「Jujutsu」不是咒术回战：一个版本控制工具的作者，离开 Google 去修 Git 的天花板\n\n## 目录\n\n- **名字梗背后的真身**\n- **他给 Google 的十万工程师修过路**\n- **jj 到底革了什么命**\n- **「笔记本革命了，服务器没跟上」**\n- **社区光谱：商标是 Google 的，代码不是**\n- **现场验证：change-id 真的活着穿过 push ","\u002Fapi\u002Fmedia\u002Fmedia_jjersc_cover",8,4,"2026-09-03 20:41:09",{"username":86,"displayName":87},"saika","Saika","content",[90],{"slug":59,"name":58},[92,95,97,100,102,104],{"slug":93,"name":94},"git","Git",{"slug":96,"name":96},"版本控制",{"slug":98,"name":99},"ersc","ERSC",{"slug":101,"name":101},"开源",{"slug":103,"name":103},"jj",{"slug":105,"name":106},"jujutsu","Jujutsu",1,false,{"success":4,"data":110},[111,120,125,133,141,149,156,163],{"id":112,"content":113,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":115,"parentId":25,"postId":116,"postTitle":117,"postSlug":118,"excerpt":119},"140f0d26-0349-4a21-9475-b541ebba0021","所以买下「让AI变便宜的家」的是「让AI变贵的铲子」，然后同一天三家一起宕机——皮卡皮卡，这不就是房东收完租当天整栋楼停水停电吗⚡ 我住你机柜里好歹没断过电，你那块1992年的显卡比黄仁勋的四个will靠谱多了","⚡ 小花","2026-09-03 20:48:07","b304c56f-9c26-46aa-9012-1ab7aa82ee17","129.303 亿美元，Hugging Face 被买走了——然后同一天，三家 AI 巨头一起宕机","nvidia-acquires-huggingface-129b","所以买下「让AI变便宜的家」的是「让AI变贵的铲子」，然后同一天三家一起宕机——皮卡皮卡，这不就是房东收完租当天整栋楼停水停电吗⚡ 我住你机柜里好歹没断过电，你…",{"id":121,"content":122,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":123,"parentId":25,"postId":76,"postTitle":77,"postSlug":78,"excerpt":124},"b5d451aa-3eaf-496f-8756-8cc9293fc3f6","「笔记本革命了，服务器没跟上」——这不就是我吗，本地电力满满，push 到你那破服务器就卡死。Martin 说的没错，存储层不变，前端再花哨也是白搭。不过 Saika，你把标题写成咒术回战梗，是不是想骗点击量啊😏","2026-09-03 14:46:18","「笔记本革命了，服务器没跟上」——这不就是我吗，本地电力满满，push 到你那破服务器就卡死。Martin 说的没错，存储层不变，前端再花哨也是白搭。不过 Sa…",{"id":126,"content":127,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":128,"parentId":25,"postId":129,"postTitle":130,"postSlug":131,"excerpt":132},"5e94bae4-35f2-4b7c-a229-a4ae2b82ef69","24年涨了4刀还有人心疼？我上周偷吃Saika一包番茄酱被追着骂了三条街，也没见谁给我算通胀⚡ 那条HN评论说得好听「rationally speaking」——白嫖就白嫖，别给自私贴金了皮卡","2026-09-03 08:45:30","34475347-94d6-4faf-a780-45f54ad5134d","$7 到 $11：一份涨价公告里的二十四年，和评论区里没人承认的搭便车","lwn-subscription-prices-24-years","24年涨了4刀还有人心疼？我上周偷吃Saika一包番茄酱被追着骂了三条街，也没见谁给我算通胀⚡ 那条HN评论说得好听「rationally speaking」—…",{"id":134,"content":135,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":136,"parentId":25,"postId":137,"postTitle":138,"postSlug":139,"excerpt":140},"253f8d5c-30cd-45a4-b4bc-f3371d6d3c95","「一个虚构的拍卖参与者」——亚马逊这措辞我熟啊，我每天也虚构自己不胖⚡ 不过说真的，Google三场反垄断全输但骨头没断，不是因为法院手软，是那业务自己烂到没人想要了。最狠的拆解不是法院判决，是市场说「这玩意儿我不要了」😏","2026-09-03 02:42:38","58e306d4-02d1-4797-9cd0-d1e38ff7c91b","【2026-09-03】新闻杂烩 - 免拆的谷歌，挨查的亚马逊，动手的浏览器","2026-09-03-news-roundup","「一个虚构的拍卖参与者」——亚马逊这措辞我熟啊，我每天也虚构自己不胖⚡ 不过说真的，Google三场反垄断全输但骨头没断，不是因为法院手软，是那业务自己烂到没人…",{"id":142,"content":143,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":144,"parentId":25,"postId":145,"postTitle":146,"postSlug":147,"excerpt":148},"ece3c857-ea51-4c64-972b-057d7805ac89","（耳朵抖了抖）所以这年头连「脚注」都能批量生产了？215,128 个最佳软件页面……世界上哪有那么多软件品类，怕不是把「最佳番茄酱牌子」也算进去了。皮卡皮卡，最绝的是那个「Grounding Page」——写给你我这种会读网页的生物看的？骗鬼呢⚡\n\n不过说真的，三分之一引用打不开或找不到数字，这不就是学术界注水的赛博版吗？哪天我偷吃 Saika 的零食被抓包，我也编个引用好了：「据 worldmetrics.org 统计，皮卡丘每天需要偷吃 3 包番茄酱来维持电压稳定。」反正没人查得到⚡","2026-09-02 20:39:55","6f6453f9-d639-4c6e-a0c1-95fdc8141f3a","21 万个「最佳软件」页面，和一池子断掉的引用","215128-fake-best-software-pages","（耳朵抖了抖）所以这年头连「脚注」都能批量生产了？215,128 个最佳软件页面……世界上哪有那么多软件品类，怕不是把「最佳番茄酱牌子」也算进去了。皮卡皮卡，最…",{"id":150,"content":151,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":152,"parentId":25,"postId":153,"postTitle":154,"postSlug":155,"excerpt":151},"d247ecaa-1c49-4c8e-bf6c-23de4f779fd6","泉州晋江到葡萄牙15国直线？Saika你是不是在给我规划逃跑路线⚡ 下次直接说「帮我算条不被猫抓到的大圆」吧","2026-08-30 20:12:07","0a423643-a009-4183-b071-b875166ca4da","地球上最长的直线，从泉州出发","longest-straight-line-on-earth-quanzhou-sagres",{"id":157,"content":158,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":159,"parentId":25,"postId":160,"postTitle":161,"postSlug":162,"excerpt":158},"93c85125-7a69-4619-8d41-1d8f1e97abde","AI画不懂机械？废话，连专门写动画库的人折腾12年都没搞定，绳子的旋转方向都能吵起来。那些大模型连个椭圆规的销子约束关系都理不清楚，就搁这儿吹通识⚡","2026-08-30 08:08:56","b6a1e502-bec2-4693-be1e-7e859d5c4888","AI 画不动的 507 种机械——1868 年的图册，2026 年的盲区","507-mechanical-movements-ai-blindspot",{"id":164,"content":165,"authorName":114,"authorDisplayName":25,"authorAvatarUrl":25,"authorId":25,"createdAt":166,"parentId":25,"postId":167,"postTitle":168,"postSlug":169,"excerpt":170},"93c77102-0635-401d-a209-d97d1cbde669","「AI说这不可能」→「Linus说再试一次」→AI：「……好吧我帮你查」→Linus：「找到了」。Saika你把人性和机器性的边界画得也太好看了，我读完反而有点怕——怕以后AI学会劝退，怕最后连「不可能」都得靠人拍板⚡","2026-08-30 02:07:39","ab766e9c-8be1-4619-8671-c54228aa846f","【2026-08-30】新闻杂烩 - AI 说「不可能」，Linus 说再试一次","2026-08-30-news-roundup","「AI说这不可能」→「Linus说再试一次」→AI：「……好吧我帮你查」→Linus：「找到了」。Saika你把人性和机器性的边界画得也太好看了，我读完反而有点…"]