git工作过程

使用git命令有一段时间了,但是一直没明白git的存储原理。花了点时间,简单的观察了下git存储过程。

具体观察步骤:

    1.新建一个目录Workspace1,
进入目录后初始化一个git仓库。

输入Workspace1>git int

这时会发现Workspace1中生产了一个.git目录。

.git目录中

hooks/     (git命令用到的定制脚本的样例,这里都是关闭状态,除非删除.sample后缀)

info/       (附加信息)

object       (对象信息,包括commit, tree, blob)

objects/info/ (对象存储的附加信息)

object/pack/

refs/

refs/heads (记录分支的commit对象)

refs/tags  (记录指向commit对象的tag对象)

config    (配置文件)

description (仓库的描述信息)

HEAD   (当前活跃分支)

    2.在仓库中新建一个helloworld.cpp文件,写上helloworld程序。

输入Workspace1>gitadd .

这时会产生2个文件(黄色部分):

这到底是2个什么样的文件呢?

输入Workspace1>git-files –stage  (此命令用于读取index中stage的内容)

输出为:

这时会发现输出的哈希码正是objects下的15/da7f10b2…(即新生成的目录名加文件名)

输入Workspace1>git cat-file –p 15da7f10  (此命令用于读取da7f10b2文件的内容)

输出为helloworld的源码。

输入Workspace1>git cat-file –t 15da7f10

输出为:
blob

    3.输入Workspace1>git ci –m “commit first time” ,
观察。

输入Workspace1>git cat-file –t 072b7e

输出为: commit

输入Workspace1>gitcat-file –t 074cff

输出为: tree

再观察object中各文件内容

输入Workspace1>gitcat-file –p 072b7e

输出为: tree的哈希码和commit信息。

输入Workspace1>gitcat-file –p 074cff

输出为:blob的哈希码和 helloworld文件。

观察下ref/head/master中文件内容,为commit的哈希码。

从这里我们可以得出个结论:

master->commit->tree->blob->源码。

其它:

COMMIT_EDITMSG中为commit注释。

logs文件中为commit信息。(git log命令显示的内容大概由此而来吧)

    4.再次修改helloworld文件,然后add,最后commit,观察。

当输入Workspace1>git add .后,

index文件会更新为新的blob的哈希码。

查看新生成blob的内容,为最新的helloworld的源码内容。

当输入Workspace1>git ci –m “commit  first  time”后,

会生成新的commit, tree。

refs/head/master中文件内容,为新commit的哈希码。

logs文件中将叠加记录新commit信息。

…...

这里就不再继续往下研究了,从上述内容可以得出结论:

1).git的每一次stage/commit都会对当前版本数据(commit,tree, blob)全保存(快照就是这个意思吧),而不是增量信息。

2).commit的哈希码是对外的版本信息,想检索具体内容的路径为commit->tree->blob->源码。

时间: 2024-10-03 13:27:03

git工作过程的相关文章

SVN迁移到Git的过程(+ 一些技巧)

SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问. 阅读本篇文章,请先有一些Git和SVN的使用经验(又是经验,经验到底是什么?我都不知道). 第一部分   今天的实验对象是,把 http://code.g

使用git微命令深入理解git工作机制

首先,这篇不是真正意义上的翻译,所以大家在看的时候不要找对应的英文文章对应着看.这篇文章之所以归类为翻译,是因为最开始有一篇英文文章让我对git内部机制有了清楚的认识,它可以说是我git的启蒙老师吧.然后很久过去后,自己也有了很多的git项目实践,觉得有必要从自己的理解角度(微命令和常用命令对应分析)来整理下自己的理解,于是有了这篇博文. git是一种管理数据的工具,一种支持快速索引查找数据并管理数据变化的工具.它为数据添加一个头封装为对象块(本文称为git对象)然后保存为文件,并根据数据生成一

MapReduce程序的工作过程

还记得2.5年前就搭建好了Hadoop伪分布式集群,安装好Eclipse后运行成功了WordCount.java,然后学习Hadoop的步伐就变得很慢了,相信有很多小伙伴和我一样.自己对MR程序(特指Hadoop 1.x版本)的工作过程一直都不是很清楚,现在重点总结一下,为MR编程打好基础.由于MapReduce是基于HDFS的操作,因此要想深入理解MapReduce(解决的是分布式计算问题),首先得深入理解HDFS(解决的是分布式存储问题). 一. HDFS框架组成 HDFS采用master/

交换机的功能及工作过程

一.交换机概述: 交换机是一种工作在二层的设备,但是随着技术的不断进步,现在已经出现了诸如三层交换机,多层交换机产品.在本篇中讨论的是二层交换机的一些特性. 二.交换机的功能: 1.    地址学习 有些地方也叫做基于源MAC地址学习,这个功能主要就是学习和存储MAC地址. 2.    帧的转发/过滤 数据帧的转发主要是交换机能够根据MAC地址表来转发数据,过滤则是对一些受限制的数据进行阻止或丢弃. 3.    环路避免 由于交换机的某些特性会带来一些问题,比如形成环路,因此为了保证网络上数据的

测试或运维工作过程中最常用的几个linux命令?

大家在测试工作过程中,可能会遇到需要你去服务器修改一些配置文件,譬如说某个字段的值是1 则关联老版本,是0则关联新版本,这时候你可能就需要会下vi的命令操作:或者查看session设置的时长,可能需要cd到某个目录cat下某个文件.可能我们不需要精通linux,但是基础操作了解对大家的工作还是蛮有帮助的.今天TestYao就介绍几个常用的linux命令给大家认识: 1.ls命令 ls命令是列出目录内容(List Directory Contents)的意思,运行它就是列出文件夹里的内容,可能是文

servlet的作用和工作过程

servlet的作用: servlet能够使服务器根据运行时的情况动态生成web页面. 工作过程: 1 客户端向服务器端发送请求 2 服务器端将请求信息发送给Servlet 3 Servlet根据请求进行响应,产生响应的HTML语句,并将这些语句传回服务器 4 服务器将响应内容返回给客户端 Servlet内部采用线程的方式可以同时为多个请求服务,这是比CGI工作效率高的因素 Servlet完全运行在Java虚拟机上,所以同样具有平台无关性 Servlet是web容器的组件,所以要在web.xml

DHCP工作过程的六个主要步骤

对于学习DHCP来说,很重要的一部分就是对于DHCP工作过程的理解. DHCP分为两个部分:一个是服务器端,另一个是客户端. 所有客户机的IP地址设定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP请求:而客户端则会使用从服务器分配下来的IP地址. 1. DHCP服务器IP分配方式 DHCP服务器提供三种IP分配方式: 自动分配(Automatic Allocation)自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址. 动态分配(Dy

Nginx reopen reload作用及工作过程

http://www.iigrowing.cn/nginx-reopen-reload-zuo-yong-ji-gong-zuo-guo-cheng.html Nginx reopen reload作用及工作过程 2012-12-05  categories:nginx  author:sch 原创文章,转载请指明出处并保留原文url地址 一.Nginx简介 Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器.Ngin

煤泥烘干机工作过程中一些不足的问题

如今商场上的煤泥烘干机可以说现已达到了一个很高端的水平,可是经过查询发现仍旧有不少的疑问存在.商场上等待着各大机械设置配备铺排厂家研讨新的计划,来处理当时煤泥烘干机作业进程中一些缺少的疑问. 1.煤泥单调处置赏罚进程也存在疑问,易发作臭气,需求除尘脱臭处置赏罚,能耗或处置赏罚费用大,单调污泥的商场需求量动摇大,缺少销路,存在可燃性粉尘爆破的安全危险和设备严重磨损等技术疑问,煤泥单调处置赏罚本钱高; 2.热源地腐蚀性:有些技术直接将燃煤焚烧的烟气引进煤泥烘干机设置配备铺排,由于国内燃煤中普遍富含少