灏天文库

自己写个 Git · 对象模型与 packfile

作者: 灏天 · 收录于 编程与开发

内容摘要

 自己写个 Git · 对象模型与 packfile 灏 灏天文库 · 编程与开发 第 5 期 编程与开发 · 第 5 期 自己写个 Git, 对象模型 长什么样 内容寻址存储 · content-addressable store Git 不是数据库,是一个 对象存储 ——blob 存文件内容、tree 存目录结构、commit 存快照,用 SHA 哈希串成一张 DAG。理解这个对象模型,你就懂了 Git 的分支、合并、历史为什么这么设计,而不是像 SVN 那样存 diff。 ⏱ 约 11 分钟 🎯 用 Git 但不懂它内部的人 📦 源:build-your-own-x §6 01 一个反共识:Git 存快照不存 diff 很多人以为 Git 像 SVN 一样存"每次改了什么"(diff)。其实 Git 存的是每次提交的 完整快照 。 每次 commit,Git 把当时的每个文件存成一个 blob(按内容算 SHA),目录结构存成 tree,再包一层 commit 指向根 tree。

打开完整知识页 返回工坊集