Tugqi Biz
  • Home
  • Categories
  • Tags
  • Archives

git 复习巩固(2)

1. 对象名¶

6ff87c4664981e4397625791c8ea3bbb5f2279a3
所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“对象名”来索引的.
每一个“对象名”都是对“对象”内容做SHA1哈希计算得来的,(SHA1是一种密码学的哈希算法)。这样就意味着两个不同内容的对象不可能有相同的“对象名”。

2. 对象¶

  • 有四种类型的对象:"blob"、"tree"、 "commit" 和"tag"

3. Blob 对象¶

新文件纳入到 Git 后会被五马分尸,它的内容被扔到在一个 blob 对象中,它的对象名是基于内容运算生成的一个 40个字符的 SHA1值。

blob 没有文件名,只有内容。

blob

4. Tree 对象¶

一个 tree 对象就是一大坨指针,指向:

  • 其他 small tree(子级 tree)
  • blob 可以把 Tree 对象想象为 Linux 文件系统中的目录,记录了子目录的信息、文件信息。

tree

5. Commit 对象¶

一个 commit 对象由以下几部分组成

  • 作者
  • 提交者
  • 注释
  • 指向一个 big tree 的指针

commit

6. 我们已经了解了3种主要对象类型(blob, tree 和 commit), 让我们大概了解一下它们怎么组合到一起的¶

如果我们一个小项目, 有如下的目录结构:

$>tree
.
|-- README
`-- lib
    |-- inc
    |   `-- tricks.rb
    `-- mylib.rb

2 directories, 3 files

如果我们把它提交(commit)到一个Git仓库中, 在Git中它们也许看起来就如下图:

示例

可以看到:¶
  • 每个目录都创建了 tree对象 (包括根目录),
  • 每个文件都创建了一个对应的 blob对象 .
  • 最后有一个 commit对象 来指向根tree对象(root of trees),
  • 这样我们就可以追踪项目每一项提交内容.

看到


  • « git 复习巩固(3)
  • git 复习巩固(1) »

Published

Mar 29, 2015

Category

It

Tags

  • git 8
  • Powered by Pelican. Theme: Elegant by Talha Mansoor