zoukankan      html  css  js  c++  java
  • 深入理解Git (三) - 微命令上篇

    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



  • 相关阅读:
    单片机 APROM: RAM: Flash:区别
    char (*a) [N]
    strcat的几种实现及性能比较
    sprintf用法
    void (*pFunction)(void);
    16个单片机常用模块电路
    MOS管工作原理
    STM32借用固件库使用外设的说明
    Python之并发编程(二)进程
    Python之并发编程(一)进程和操作系统概述
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7300630.html
Copyright © 2011-2022 走看看