首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

二.Git的对象模型

2013-11-22 
2.Git的对象模型Git的对象模型:SHA:所有用来表示项目历史信息的文件,都是通过一个40个字符的“对象名”来索

2.Git的对象模型
Git的对象模型:SHA:

所有用来表示项目历史信息的文件,都是通过一个40个字符的“对象名”来索引的,对象看起来象这样:

adedae6173d56ebfa0b3965dc25229ff7554a9

每个“对象名”都是“对象”内容做SHAI哈希计算得来的,SHAI是一种密码学的哈希算法。这样做意味着两个不同内容的对象不可能有相同的“对象名”。

?

这样做的好处:

. Git只做比较对象名就可以很快判断两个对象是否相同

. 因为在每个仓库的“对象名”的计算方法都完全一样,如果同样的内容存在不同的仓库中,就会存在相同的“对象名”下,节约空间。

. Git还可以通过检查对象内容的SHAI的哈希值和“对象名”是否相同,来判断对象内容是否相同。

对象:object

每个对象包括三个部分:类型、大小、内容。大小就是指内容的大小,内容取决于对象的类型。

有四种类型的对象:“blob”、“tree”、“commit”、和“tag”。

. “blob”用来存储文件数据,通常是一个文件

. “tree”有点像一个目录,它管理一些t“ree”和“blob”(就像文件和目录)

. 一个“commit”只指向一个“tree”,它用来标记项目某一个时间点的状态。它包括一些关于时间点元数据,比如:时间戳、最近一次提交者、指向上次提交(commits)的指针等。

. 一个“tag”是来标记某一个提交的“commit”方法。

?

几乎所有的Git功能都是使用这四种简单对象类型完成的。它就像在你本机的文件系统上构建一个小的文件系统。

与SVN的区别:

SVN等传统的版本控制系统采用的是“增量文件系统”,存储每次提交间的差异。

Git会把你每次提交的文件的全部内容(snapshot)都记录下来。

热点排行