By francis_hao    Nov 27,2016

 

参考【1】的一张图已经把git的基本原理描述的很清楚了,如下:

 

下面以实例演示其过程,需要用到两个命令cat-file和ls-files,可见参考【2】和参考【3】

1、新建一个文件名为name,内容为content的文件。

 

2、添加文件到暂存区,此时objects文件夹中已经有对应的文件了

 

3、commit,此时objects文件夹有三个文件,其中的两个文件是因为commit命令增加的。三个文件的类型分别是commit、tree和blob。

 

4、查看日志,得到commit的哈希值,并查看其内容,可以看到内容中包含了一个tree类型的哈希值。

 

5、查看这个tree类型的文件,看到其包含了一个blob类型的文件,并且其真实的文件名为name,就是我们提交的文件。

 

6、查看blob类型文件的内容。三种文件的关系是commit->tree->blob,blob文件就是经过处理的name文件。知道了commit类型的文件,那么这次提交的相关文件就全知道了

 

7、最后,log日志是存放在哪里,也就是由哪里索引到commit类型的文件的呢?

这个文件的第一项是上一次提交的哈希值,这里因为是第一次提交所以就是全0了。

 

 


本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/

 

 

参考

【1】蒋鑫.《git权威指南》北京:机械工业出版社,2011.6

【2】博客园 http://www.cnblogs.com/yinghao1991/p/8594962.html git使用笔记(十三)ls-files

【3】博客园 http://www.cnblogs.com/yinghao1991/p/8595468.html git使用笔记(十四)cat-file

 

 

最新文章

  1. Xamarin Android自学和实践步骤
  2. 郑轻校赛题目 问题 G: 多少个0
  3. 模仿MFC封装Windows API
  4. dubbo+zookeeper例子
  5. 后端码农谈前端(HTML篇)第一课:HTML概述
  6. C#中ListView的简单使用方法
  7. scala实现Netty通信
  8. ASP.NET MVC的约定
  9. [未完成]关于java基础数据类型中的一些总结
  10. java transient关键字和transaction的区别
  11. 自定义cell 自适应高度
  12. apache 出现Index of /的页面解决
  13. 不用不知道 apply()与call()的强大
  14. jQuery_第三章_工厂函数
  15. MTK GPIO 一些理解
  16. hdu 1241 Oil Deposits (简单搜索)
  17. wangEditor的使用
  18. 如何从日期对象python获取以毫秒(秒后3位小数)为单位的时间值?
  19. Java中Double类型的精确计算
  20. dubbo+zipkin调用链监控(二)

热门文章

  1. 为什么不早点使用 Git...
  2. Java+Selenium3自动化测试框架设计系列--href="javascript:void(0)"如何获得元素定位
  3. (数据科学学习手札29)KNN分类的原理详解&Python与R实现
  4. Xshell 清除历史记录方法
  5. springboot2.x+maven+proguard代码混淆
  6. JAVA中堆栈和内存分配详解(摘抄)
  7. 高德API+Python解决租房问题(.NET版)
  8. 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
  9. java设计模式之模版方法模式以及在java中作用
  10. Linux yum安装MySQL5.7,及远程连接mysql(亲测有效!)