Git学习笔记

Git与SVN的区别:SVN是集中式的版本控制系统,Git是分布式的版本控制系统。

  • 集中式版本控制系统,版本库是集中存放在中央服务器的,每个人都需要pull最新的文件到自己的电脑或者push更新到中央服务器。
  • 分布式版本控制系统,没有中央服务器,版本库是存放在每个人的电脑,同事之间只需要把各自的修改push给对方即可。

图1 集中式控制系统

图2 分布式控制系统

 

SHA

Git里常见‘40个字符’的字符串,是用来索引所有项目历史信息的文件。

每一个对象名都是对对象内容做SHA1运算,内容不一样则SHA1值不一样;只有他们的内容完全相同,SHA1值才会相同。

blob对象和tree对象和其他对象一样,都是用其内容的SHA1值来命名的,因此Git可以仅仅根据tree对象的名字是否相同来判断其对象内容是否一样。

对象

对象分为类型、大小、内容三部分,有四种类型的对象:blob、tree、commit、tag。

  • blob对象用来存储文件的内容,一个blob对象就是一块二进制数据。
  • tree对象用来表示内容之间的目录层次关系,一个tree对象有一串指向blob或其他tree对象的指针。
  • commit对象指向一个tree对象,且带有相关的描述信息;由一个tree、parent、author、committer四部分组成。
  • tag对象对某一个时间点的版本打上标签。

对象模型

如下图所示,commit对象指向根tree对象,每个目录都创建了一个tree对象,每个文件都创建了一个blob对象。

 

posted on 2015-10-01 21:56  CoryKang  阅读(205)  评论(0)    收藏  举报

导航