1. 程式人生 > >深入理解Git (三) - 微命令上篇

深入理解Git (三) - 微命令上篇

由於 obj 為什麽 info 進入 ng- net t對象 upd

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 (三) - 微命令上篇