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. Codeforces 521 E cycling city

    cf的一道题,非常有意思,题目是问图中是否存在两个点,使得这两个点之间有三条路径,而且三条路径没有公共点. 其实就是判断一下是否为仙人掌就行了,如果不是仙人掌的话肯定就存在,题目难在输出路径上,改了半 ...

  2. bzoj 1211: [HNOI2004]树的计数 -- purfer序列

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MB Description 一个有n个结点的树,设它的结点分别为v1, v2, ...

  3. BZOJ 1040 ZJOI 2008 骑士 树形DP

    题意: 有一些战士,他们有战斗力和讨厌的人,选择一些战士,使他们互不讨厌,且战斗力最大,范围1e6 分析: 把战士看作点,讨厌的关系看作一条边,连出来的是一个基环树森林. 对于一棵基环树,我们找出环, ...

  4. [转]关于Java对中文排序的问题

          1 2 3 4 5 6 Comparator chinese_cmp = Collator.getInstance(Locale.CHINA);   String[] strs = new ...

  5. Codeforces Round #305 (Div. 1) B. Mike and Feet 单调栈

    B. Mike and Feet Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/547/pro ...

  6. web前端笔记整理,从入门到上天,周周更新

    由于大前端知识点太多,所以一一做了分类整理,详情可见本人博客 http://www.cnblogs.com/luxiaoyao/ 一.HTML 1.注释 格式:<!-- 注释内容 --> ...

  7. apache 与 iis共存

    先装上了apache ,再装iis会出现错误.所以先关闭apache,再进行iis安装.iis安装完后修改iis80端口为8080端口, 同时使用命令 cd C:\Inetpub\AdminScrip ...

  8. 按字母顺序排列的IDC函数列表

    http://www.2cto.com/shouce/ida/162.htm 按字母顺序排列的IDC函数列表 下面是函数描述信息中的约定: 'ea' 线性地址 'success' 0表示函数失败:反之 ...

  9. Div+CSS展示物流跟踪轨迹信息

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. 用CSS3来代替JS实现交互

    [CSS3和JS] 对于CSS了解的同学都知道,CSS的实现是最底层的,在实现方式和性能上都不是,JS这种提供接口的脚本可比的:从CSS3的动画和JS动画对比角度来看两者,会更清晰:而且随着前端框架的 ...