探索 Git 底层原理:Blob、Tree、Commit 对象与暂存区本质
很多人天天用 Git,但并不清楚 .git/objects 文件夹里到底装了什么。
Git 本质上是一个基于内容寻址的键值数据库:
- Blob:存储纯文件数据内容,以 SHA-1/SHA-256 为文件名;
- Tree:表示目录结构,记录文件名与其对应的 Blob 或子 Tree 指针;
- Commit:包含指向顶层 Tree 的指针、父 Commit 引用、作者信息与提交消息。
搞懂了这个模型,git rebase、reset 和分离头指针就再也不会感到害怕了。