Git-内部原理
参考
用哈希算法, 利用文件内容 (和文件名无关) 生成哈希值, 保证每次提交的独立和完整.
每次提交都会生成当前所有文件的快照, 并保存快照的索引, 如果有些文件没有修改, git 就不会存储那个文件, 而只是保留一个链接, 指向之前存储的文件.
Git 是一个内容寻址文件系统, 其核心部分是键值对数据库.
在 object 这个目录下, 几个类型的对象, blob, tree, commit.
blob 对象记录文件内容, tree 对象记录 blob 的相关信息, commit 对象记录 tree 的相关信息.
即:
- Commit : 作者, 信息, 指针
- Tree : 一个指向文件名, 内容和其他 tree 的指针
- Blob : 数据
git add
命令的作用就是在代码仓库生成一个 blob 节点, 并修改 tree 的指针.
分支
master 指针所处的位置, .git/refs/heads/master
:
1 |
|
就能看到 master 所指的地方.
所以分支其实就是指向不同 commit 的指针.
Pro Git 最后一章
Git-内部原理
http://example.com/2022/09/25/Git-内部原理/