楼主:
galic (嘎利)
2026-08-04 22:57:09突然觉得值得回一篇,因为你在问的问题我最近才想过。
当然不是“有了AI之后,还需要 XXXX?”
这种换个 XXXX ,就能重新发一篇的格式废文。
我还顺便看了你在版上的其他文章,我觉得你其实有感受到真正的问题,
缺乏的是问出好问题的能力。
说的是#1cUZCuPN (Soft_Job) [ptt.cc] [讨论] FP正在杀死设计模式吗?
零基础知识的 vibe coder 需不需要 git 我不知道,
但有基础知识的世界第一个 vibe coder → Linus Torvalds 就是发明 git 的人。
每个人工作的方式跟目的都不同,
你要论证这个题目可能得去找没 git 知识的初学 vibe coder,
分成两组:一组补充简单 git 概念,一组限制不能知道什么是 git。
我相信最终你根本得不到什么结论。
个人认为软件工程的直觉会破坏大脑的运作,
让你容易认定工作的结果跟工作的模式有直接关联。
你花大把的时间改善的只是效率或品质,(可能间接影响你能不能产出结果,)
但这跟是不是能走向预期的结果不是同一个问题。
这说的是你把使用工具的知识跟解答问题的知识绑在了一起,
如果能清楚的拆开,那这题根本不需要讨论。
直觉是一个简单判断条件:
如果产出结果必定需要某个工具,那使用工具的知识是必须的。
如果要开发 ios 程式是不是要学 swift?
如果要开发一个在 ios 上做健康管理的 app 是不是要学 swift?
很显然你问的问题很像后者,大部分的人会回答你健康管理的知识比学 swift更重要。
而今天,“学 swift”的位子可以用 AI 一词替上。“健康管理的知识”也可以。
这才是现在每个人都在面对的问题,而且他没有答案。
=====
其实想回答的是抽象语意的这题,这跟我最近在做的题目有关,
而我觉得我手上有你要的答案。
要先搞清楚的一点是 git 其实很复杂,这也是我一直觉得他很难使用的原因。
git 的底层实作是快照(snapshot),那是资料/数据库领域的东西。
但它的心智模型却是补丁(patch) 和增量。
最初我猜这原因来自:早期大家熟悉的版本控制都是补丁模型。但这好像没真正解释。
AI 给我的答案是因为分布式协作需要 Code Review 和 Branch (尤其是Long-lived)。
Code Review 需要的就是 diff △ (也就是patch),看看这次变更了哪里。
而 Branch 最终要 Merge 和 Rebase,你要解决冲突时也是 diff。
这观念最后影响了 Dolt — 把 Git 的增量概念套上了 SQL。
你推文举的 Jujutsu (jj/咒术) 很显然是在解我说的“git 很难用”的问题。
因为在 push 到 remote 之前,对我来说(或大部分不习惯多人协作的人),
patch 模型是杀鸡用牛刀。
没有 jj 之前,你需要 stash、rebase、cherry-pick 等高级操作。
而 jj 用的正好就是数据库的那套模型—ACID、Operation Log(Undo)...。
=====
最后你说的语意,那是第三种—CRDT 或 CvRDT。
这你平常就有在用但可能无感,Google Docs 和改版后的Notion。
他背后是一个漂亮的抽象代数—格(lattice),CRDT 是 join-semilattice (上半),
CvRDT 是 meet- (下半-)。
而格偏偏被用在词汇、命题、概念甚至程式状态,
利用格的偏序与上下确界结构,来对概念的包容、特异性与真值进行严格的数学建模。
你最熟的是指称语意,
说的是在 Domain Theory 中,熟悉的程式计算(Lambda Calculus) 被转换成完备格,
来证明递回、循环语义是有意义且可收敛的。
所以语意的概念有了,版本控制有了,那一个(抽象)语意的版本控制是什么?
这就是我在做的题目。
而我必须告诉你的是,他很可能必须是一种新的程式语言,因为现有语言很难做到。
一个贴近的语言叫 Unison,能做到基于语意的版控,
而他的实作叫做 Content-addressed AST(语法树)。
你需要能从语法层级... 不对。
这其实很简单:
res = create(
model="gpt-5.5",
instructions="分析这两个程式版本的差异?",
input=[ {"content": [file1 file2] } ],
)
print(res.text)
作者:
sarsman (DeNT15T♠)
2026-08-05 09:04:00?
他其实就是想表示Linus才是第一个vibe coder只是vibe的对象是一群工程师
作者:
GiPaPa (揪泞)
2026-08-05 10:14:00我以为我很懂git 但现在我觉得我不懂了
我觉得他如果加上“token无料” or “token free”我会赞成他的说法 免费的人力
作者:
VScode (VSisBestIDEinTheWorld)
2026-08-05 13:21:00你讲的东西好硬听不懂
作者:
USD5566 (美金五千五百六十六)
2026-08-05 13:53:00并不值得回一篇 他就上来问爽的 看个git而已在那边毛一堆被电还上来问可不可以不要看zzz
作者:
wulouise (在线上!=在电脑前)
2026-08-05 18:21:00同意问好问题的部分,其他太发散
作者:
nashmvp ( )
2026-08-06 00:54:00推
作者:
ian90911 (xopowo)
2026-08-06 14:41:00推
作者:
Romulus (Säubern Mode)
2026-08-07 10:40:00我甚至第一次知道git底层实作是snapshot而不是patch这个version control based语言听起来很炫酷 发展的如何
作者: superpandal 2026-08-07 20:28:00
本来不想推文 推一下好了 首先git不是基于patch本来就是正常的 因为效能考量你不可能在基本版本一路套用
楼主:
galic (嘎利)
2026-08-08 00:55:00patch是unix指令...没snapshot要怎么完成commit? 还子命令 你干脆自己造个git这里是个分享知识和经验的学术论坛 至少我是这么认为的
作者: superpandal 2026-08-08 01:41:00
我知道 我常用 但git apply是自己实现的 haha在commit内实现就可以了啊 不觉得一定得独立函数git的子命令可以自己透过脚本扩充你不知道吗 本来就是这样用的 你举例的stash cherry-pick完全可以外部实现 我没有很想跟你讨论那么深 刚开始回应就是了 只是多讲了一些因为你说那些是高级操作 我不那么认为 我脚本仔凑的出来功能 事实上很多功能也应该这么做 避免臃肿化