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
$ cat .git/refs/heads/master

就能看到 master 所指的地方.

所以分支其实就是指向不同 commit 的指针.

Pro Git 最后一章


Git-内部原理
http://example.com/2022/09/25/Git-内部原理/
作者
Jie
发布于
2022年9月25日
许可协议