Tag Archives: 原理

说实话,第四章之后我只比较仔细地看了第五章「分布式Git」,不过里边的内容很多在比如《Got Github》和其他一些小文章(比如关于Gitflow的文章)也看过了,所以第四章到第八章都没怎么留下笔记,至于第九章完全是对Git的实现还是有一点兴趣所以也粗略地看了下,并没有深入的进行实验,毕竟时间还是很紧,有许多事情要做,以后对Git的学习还是留在开发过程中吧,其实用好前三章的第五章介绍的内容对我已经在平时够用了……

 

从根本上来讲Git是一套内容寻址(content-addressable)文件系统,在此之上提供了一个VCS用户界面。

.git目录中,description文件仅供GitWeb程序使用,config文件包含了项目特有的配置选项,info目录保存了一份不希望在.gitignore文件中管理的忽略模式的全局可执行文件,hooks目录包含了客户端或服务端钩子脚本。objects目录存储所有数据内容,refs目录存储指向数据(分支)的提交对象的指针,HEAD文件指向当前分支,index文件保存了暂存区域信息。

Git对象

从内部看,Git是简单的key-value数据存储。Git存储数据内容的方法——唯美分内容生成一个文件,取得该内容和SHA-1校验和,创建以该校验和前两个字符为明朝的子目录,并以(校验和)剩下38个字符为文件命名(保存至子目录下)。

tree对象:

tree对象可以存储文件名,同时也允许存储一组文件。Git中所有内容以treeblob对象存储,其中tree对象对应于UNIX中的目录,blob对象则大致对应于inodes或文件内容。一个单独的tree对象包含一条或多条tree记录。
Read More →