git 4种对象的理解
git中有四种基本对象类型,可以说Git的所有操作都是通过这四种对象完成的。下图是《Git版本控制管理》中文第二版的原话,顺便吐槽一下,这本书真的翻译的一般。。
下面说下我的理解吧,首先blob对象,blob文件是一种二进制文件,当把一个文件add进暂存区时就生成一个blob对象,它包含了这个文件的所有数据,但不包括文件名字、路径、格式等信息,之后每次提交只要文件有变更都会生成一个新的blob对象,但原有的blob对象也会保存下来,也就是说只要内容相同的文件在Objects库中只存在一份,这也就是Git和其他版本控制系统的区别。还要说明的是,每个blob对象的id是对文件内容进行hash得到的,这样在比较文件是否修改了的时候只用比较对应的blob对象名是否相同就可以了。
tree对象,可以把它想象成文件目录,每个tree对象包含0个或多个tree对象和blob对象。
commit对象,每次提交都会生成一个commit对象,而每个commit对象都对应一个tree对象,通过这个tree对象可以查看这次提交的所有信息。
tags对象,tags对象主要是为了解决每次提交id太长不好记的问题,可以对每次提交标注一个tag。
git 4种对象的理解的更多相关文章
- 我对hibernate的对象的3种状态的理解
老师的说法 Hibernate中对象的状态 在Hibernate使用中,对象的状态有以下三种 a.临时对象 : 在程序中使用new方式创建的对象 b.持久对象 : 在程序中与sess ...
- Git中的三种对象
1.Git中有三种对象 commit 每执行一次git commit,git都会对当前工作目录的所有文件生成一次镜像,工作区下的目录对应的对象是tree,工作区下的文件对应的对象是blob,tree下 ...
- 【原创】关于Git暂存区的理解
关于Git暂存区的理解 暂存区可以说是Git的三大重要的区域之一,另外两个分别是工作目录和Git仓库,所以说对暂存区的深入理解可以帮助我们理解很多Git命令背后隐藏的工作原理.今天,本文将以 ...
- java的几种对象(PO,VO,DAO,BO,POJO)解释
java的几种对象(PO,VO,DAO,BO,POJO)解释 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中 ...
- [转]session缓存机制和三种对象状态
摘自 http://blog.csdn.net/csh624366188/article/details/7612142 Hibernate 的Session就是其中的一个,它提供了基本的增,删,改, ...
- JS function的定义方法,及function对象的理解。
废话篇: 今天看到了Function的内容,各种晕,各种混淆有木有.简直是挑战个人脑经急转弯的极限啊.不过,最终这一难题还是被我攻克了,哇咔咔.现在就把这东西记下来,免得到时候又忘了就悲催了.... ...
- [转载]java的几种对象(PO,VO,DAO,BO,POJO)解释
原文地址:java的几种对象(PO,VO,DAO,BO,POJO)解释作者:munandong 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最 ...
- 谈谈对Javascript构造函数和原型对象的理解
对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔!). 常用的几种对象创 ...
- 关于js函数对象的理解
js中函数和对象的关系: 什么是对象?根据W3C上面的解释JS中所有事物都是对象,对象是拥有属性和方法的数据,由此可以看出除了基 本值类型不是对象(number.string.Boolean.Unde ...
随机推荐
- Appium+python自动化6-Remote远程控制【转载】
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙 ...
- Codeforces 628 B.New Skateboard
B. New Skateboard time limit per test 1 second memory limit per test 256 megabytes input standar ...
- ECNU 3462 最小 OR 路径 (贪心 + 并查集)
题目链接 EOJ Monthly 2018.1 Problem F 先假设答案的每一位都是$1$,然后从高位开始,选出那些该位置上为$0$的所有边,并查集判断连通性. 如果$s$和$t$可以连通的话 ...
- java数组集合
一.ArrayList 1. ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组2. 如果增加的元素个数超 ...
- NOIP2018提高组模拟题(二)
咒语(curse) Description 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路. 正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条. 亮亮拿起纸条的一端, ...
- UVA——442 Matrix Chain Multiplication
442 Matrix Chain MultiplicationSuppose you have to evaluate an expression like A*B*C*D*E where A,B,C ...
- 理解boot.img与静态分析Android/linux内核
一些尝试和理解. 1>提取boot.img: 其中,msm代表是高通的芯片,msm_sdcc.1是外接的SD卡挂载的目录,by-name指的是这个sd卡分区的名称.下面几行代表每个分区存储的东西 ...
- Email List
题目:给几个Email的list,输出全部list的交集(在全部list中都出现过的email). 思路:用set记录前i个list中都含有的email,当进行第i+1时,检查每个email是否在该s ...
- dxFlowChart运行时调出编辑器
dxFlowChart运行时调出编辑器 uses dxFcEdit; procedure TForm1.Button1Click(Sender: TObject);var f: TFChartEdit ...
- win10 创建安卓模拟器及启动的方法
一打开 安卓 studio 然后点击AVD manager 创建一个模拟器 二 通过命令行快速启动模拟器 D:\Android\sdk\tools\emulator.exe -netdelay non ...