标签:
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
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/hongchangfirst/article/details/45333575