`

git文件存储原理解析(八)

阅读更多

1.git的目录结构

 

 1.1 新建一个git-test空文件夹,使用git init 初始化,交由git管理

  

  1.2 .git 目录下 文件夹结构如下:

  

  

2.git如何保存数据?

  2.1.对象类型

  从内部来看,Git 是简单的 key-value 数据存储。它允许插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。可以通过底层命令hash-object 来示范这点,传一些数据给该命令,它会将数据保存在 .git 目录并返回表示这些数据的键值。

   tree对象

   blob对象

   commit对象

   tag对象

  对象之间关系:(参考git-scm.com官网图例)

  

 

   2.2. 向git-test写入一个文件file.txt,观察.git目录下变化

   对文件进行add  --> commit 才会发现objects文件目录才发生变化,也就是说 git 在每次对本地版本库 进行commit的时候,就会对数据 进行一次保存,这是 会生成 commit对象,tree对象以及blob对象。Git 存储数据内容的方式──为每份内容生成一个文件,取得该内容与头信息的 SHA-1 校验和,创建以该校验和前两个字符为名称的子目录,并以 (校验和) 剩下 38 个字符为文件命名 (保存至子目录下)。

通过 cat-file 命令可以将数据内容取回。该命令是查看 Git 对象的瑞士军刀。

  

   首次提交对象及其树结构.

做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。

提交对象及其父对象.

 

 我们使用命令行查看一下刚刚写入文件变化:

  第一次commit   file.txt

  第二次commit   file2.txt  file3.txt

  参考下面截图:

  1).查看2次提交的commitId ,以及 git cat-file 命令使用

  

  2).查看第一次commit tree blob 类型 及存储类容

  

  3).查看第二次commit tree blob 类型及内容

  

  

 2.3 分支以及对象应用关系如下:

 

 

 

相关博客:

1).Git 版本控制工具介绍(一)

  2).Git 工作流程介绍(二)

  3).Github的使用(三)

  4).Git 常用命令(四)

  5).Git 版本回退(五)

  6).Git版本冲突解决(六)

  7).git 分支管理(七)

  8).git文件存储原理解析(八)

  • 大小: 16.3 KB
  • 大小: 36.4 KB
  • 大小: 26.3 KB
  • 大小: 43.2 KB
  • 大小: 50.2 KB
  • 大小: 35.5 KB
  • 大小: 34.3 KB
  • 大小: 42.4 KB
0
1
分享到:
评论
2 楼 MCLoginandPwd 2017-08-11  
分享一款代码生成器,拖拽式组件结合流式处理,很容易的访问数据库、http、文件读写操作等等,支持编写javascript、java、freemaker,功能丰富强大,编制规则,可生成一切想要的代码,详见:http://blog.csdn.net/LoginandPwd/article/details/76944900,更多资讯:http://blog.csdn.net/LoginandPwd/article
1 楼 carlosfu 2016-02-02  
  

相关推荐

Global site tag (gtag.js) - Google Analytics