//注:所有图片来源于《Git Internals》PDF文档。
昨日些许郁闷,都是《Git Internals》这本书弄得。
Git 简介
Git 是一个SCM版本管理工具,始作者是Linus Torvalds,也就是linux之父。
Git 最初用一些脚本语言实现(Shell, Perl)等,后来用C语言改写,性能显著提高。
Git 有些独特的地方,比如他的数据存储的结构。它相对于一些主流的工具比如CVS, SVN等等,存储占的空间要小很多。
而我也正是因为没耐心弄清这个数据模型而不太开心。
Git 数据对象
Git视数据为"Git Object", 一共有4种Git Object,都保存在Git 数据库中,也就是在Git 的文件系统目录下。
每个对象保存时都经过压缩(Zlib),并有一个唯一的索引值(SHA1 + header)
SHA stands for Secure Hash Algorithm. A SHA creates an identifier of fixed length that uniquely identifies a specific piece of content. SHA-1 succeeded SHA-0 and is the most commonly used algorithm. Wikipedia (http://en.wikipedia.org/wiki/SHA1) has more on the topic. |
Commit 结构
<=要commit的文件结构, 包括tree--directory 和blob-file.
<=2次commit的关系。父与子
在merge branch的时候 一个commit是可以有2个以上父commit的。
内容太多,分多篇写吧。