对象与引用
从一个名字,走到一份内容。
从提交中读取文件,需要沿着引用逐步查找。每一个对象,都提供了下一步的线索。
启用 JavaScript 可操作对象图;也可以阅读下方讲解和实验。
四个名字,四种职责。
main 命名一个提交。commit 引用根 tree 和父提交。tree 把名字映射到对象。blob 保存内容,内部没有文件名。
把文件从 guide.txt 换成 copy.txt。两条路径到达相同的 blob。相同内容可以复用,增加文件名并不要求再建一个内容对象。
这对理解分支意味着什么?
分支是指向 commit 的可移动引用。共享不可变对象使创建分支很轻量。多个 Agent 并行工作时,仍需要单独考虑工作目录和 Index 的隔离。
这是逻辑查找模型。C2、T1、T2、B1 是教学标识,不是真实哈希。磁盘偏移、packfile 压缩、缓存和网络延迟不在本图范围内。
视觉参考:Cursor《Git at any scale》中的内嵌图解。本教学模型由本仓库独立实现。
Git at any scale · Cursor ↗