1 git hash-object

曾经讲过Git用Hash值作为Git对象的名字,那么详细是哪个命令呢?

我们能够先改动一个文件:

echo "hongchangfirst" > zhc.conf

然后

git hash-object -w zhc.conf

56166dc42a6a2f694e088694a2a2c90606e28f2d

然后我们能够去上节讲的.git/objects文件夹下,应该有一个名字为56的文件夹。里边会有一个名字为166dc42a6a2f694e088694a2a2c90606e28f2d的文件,我们开打这个文件看看里边是什么东西:

一堆乱码。为什么呢,由于Git用zlib进行了压缩,那么怎么看呢?继续往下看。

2 git cat-file

我们首先看一下56166dc42a6a2f694e088694a2a2c90606e28f2d这个对象是什么?

git cat-file -t 56166dc42a6a2f694e088694a2a2c90606e28f2d

blob

哦,原来是blob对象,上节讲过blob是数据对象,那么我们看看里边的内容呢?

git cat-file -p 56166dc42a6a2f694e088694a2a2c90606e28f2d

hongchangfirst

哦。原来能够这么看。可是zhc.conf在哪存储呢?继续往下看。

3 git update-index

zhc.conf这样的文件名称信息是存储在tree对象里的,而生成tree对象。必须先将blob对象加入到cache中,当中存储item数据块集合。而item数据块是由blob对象Hash值+数据文件名称字(zhc.conf)+文件模式(100644)组成的。

git update-index --add --cacheinfo 100644 56166dc42a6a2f694e088694a2a2c90606e28f2d zhc.conf

假设有多个文件,能够继续将文件对blob对象,文件名称和文件模式写到cache里。

4 git ls-files

查看一下cache种都有哪些文件,

git ls-files

zhc.conf

当全部当数据我们都加入到cache中后,我们就能够生成tree对象了。

5 git write-tree

4e1ba2916b4b903d2e5a2209cdcca7129a891c2f

此时我们能够进入.git/objects/4e/ 查看此tree对象。

git cat-file -t 4e1ba2916b4b903d2e5a2209cdcca7129a891c2f

tree

告诉我们是tree对象,看看里边的内容:

git cat-file -p 4e1ba2916b4b903d2e5a2209cdcca7129a891c2f

100644 blob 56166dc42a6a2f694e088694a2a2c90606e28f2d    zhc.conf

我们看到能够依据tree对象找到对应的blob对象。

原文:http://blog.csdn.net/hongchangfirst/article/details/45333575

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

深入理解Git (三) - 微命令上篇的更多相关文章

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

    首先.这篇不是真正意义上的翻译,所以大家在看的时候不要找相应的英文文章相应着看.这篇文章之所以归类为翻译.是由于最開始有一篇英文文章让我对git内部机制有了清楚的认识,它能够说是我git的启蒙老师吧. ...

  2. 深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

  3. 理解Git的工作流程(转)

    英文原文:Understanding the Git Workflow 如果你不理解Git的设计动机,那你就会处处碰壁.知道足够多的命令和参数后,你就会强行让Git按你想的来工作,而不是按Git自己的 ...

  4. 理解git经常使用命令原理

    git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...

  5. 理解git的分支原理,更好地使用git

    文章内容转载于git-scm. 部分内容涉嫌枯燥 一.git分支概念 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控 ...

  6. 深入理解Git - 一切皆commit

    在对 git 有了基本理解和知道常规操作之后,如何对 git 的使用有进一步的理解? 一切皆 commit 或许是个不错的理解思路. 本文将从『一切皆 commit 』的角度,通过 git 中常见的名 ...

  7. [转发]深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

  8. 全面理解Git

    前言 人生贵知心,定交无暮早. 原文博客地址:Git命令总结 知乎专栏&&简书专题:前端进击者(知乎)  前端进击者(简书) 正文 1.Git简介 Git的诞生确实是一个有趣的故事,我 ...

  9. 深入理解OOP(三):多态和继承(动态绑定和运行时多态)

    在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...

随机推荐

  1. [SDOI2017]数字表格 --- 套路反演

    [SDOI2017]数字表格 由于使用markdown的关系 我无法很好的掌控格式,见谅 对于这么简单的一道题竟然能在洛谷混到黑,我感到无语 \[\begin{align*} \prod\limits ...

  2. [POI2005]A Journey to Mars --- 单调队列

    [POI2005]A Journey to Mars 题目描述: Byteazar 决定去火星参加一个空间站旅行. 火星的所有空间站都位于一个圆上. Byteazar 在其中一个登陆然后变开始饶圈旅行 ...

  3. 【筛法求素数】【推导】【组合数】UVALive - 7642 - Prime Distance

    题意:n个格子,m个球,让你把球放入某些格子里,使得所有有球的格子之间的距离(abs(i-j))均为素数 ,让你输出方案数. 只占一个格子或者两个格子显然可行. 占有三个格子的情况下,则必须保证其中两 ...

  4. Android消息机制——Handler

      /**android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个MessageQueue(消息队列), * 但是MessageQueue被封装到Looper里 ...

  5. Tarjan 算法详解

    一个神奇的算法,求最大连通分量用O(n)的时间复杂度,真实令人不可思议. 废话少说,先上题目 题目描述: 给出一个有向图G,求G连通分量的个数和最大连通分量. 输入: n,m,表示G有n个点,m条边 ...

  6. Linux下swap分区多大才合适的问题探讨

    说明: 1.这个话题在每个Linux发行版中都各不相同,且在当下内存硬盘的时代下,再组个磁盘阵列之后速度相当. 2.我觉得硬盘大的情况下,有多大搞多大,我只要控制内存的使用率在99%时才使用swap, ...

  7. URAL 1099. Work Scheduling (一般图匹配带花树)

    1099. Work Scheduling Time limit: 0.5 secondMemory limit: 64 MB There is certain amount of night gua ...

  8. sql 锁类型与锁机制 转

      SQL Server锁类型(SQL)收藏1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁.   2. NOLOCK:不添加共享锁和排它锁,当这个 ...

  9. SpringBoot添加支持CORS跨域访问

    原文:https://www.jianshu.com/p/c6ea21b64f6e CORS(Cross-Origin Resource Sharing)"跨域资源共享",是一个W ...

  10. 【docker】【redis】1.docker安装redis【单点redis服务】

    1.首先确定 需要在docker上拉取redis的哪个版本的镜像 [由于使用了aliyun的源,并且加速器也是用的阿里云的加速器,所以直接在阿里云开发者平台上找redis的镜像有哪些版本是再好不过了, ...