git使用笔记(九)操作原理
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
最新文章
- Xamarin Android自学和实践步骤
- 郑轻校赛题目 问题 G: 多少个0
- 模仿MFC封装Windows API
- dubbo+zookeeper例子
- 后端码农谈前端(HTML篇)第一课:HTML概述
- C#中ListView的简单使用方法
- scala实现Netty通信
- ASP.NET MVC的约定
- [未完成]关于java基础数据类型中的一些总结
- java transient关键字和transaction的区别
- 自定义cell 自适应高度
- apache 出现Index of /的页面解决
- 不用不知道 apply()与call()的强大
- jQuery_第三章_工厂函数
- MTK GPIO 一些理解
- hdu 1241 Oil Deposits (简单搜索)
- wangEditor的使用
- 如何从日期对象python获取以毫秒(秒后3位小数)为单位的时间值?
- Java中Double类型的精确计算
- dubbo+zipkin调用链监控(二)
热门文章
- 为什么不早点使用 Git...
- Java+Selenium3自动化测试框架设计系列--href=";javascript:void(0)";如何获得元素定位
- (数据科学学习手札29)KNN分类的原理详解&;Python与R实现
- Xshell 清除历史记录方法
- springboot2.x+maven+proguard代码混淆
- JAVA中堆栈和内存分配详解(摘抄)
- 高德API+Python解决租房问题(.NET版)
- 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
- java设计模式之模版方法模式以及在java中作用
- Linux yum安装MySQL5.7,及远程连接mysql(亲测有效!)