Git 原理筆記--文件存儲

 

Git 是一套內容尋址 (content-addressable) 文件系統git

底層命令和高層命令

這部分命令通常被稱做「底層(plumbing)」命令,而那些更友好的命令則被稱做「高層(porcelain)」命令。數據庫

目錄結構spa

 

目錄功能:指針

 objects 目錄存儲全部數據內容;refs 目錄存儲指向數據(分支)的提交對象的指針;HEAD 文件指示目前被檢出的分支;index 文件保存暫存區信息code

 

Git 對象

Git 的核心部分是一個簡單的鍵值對數據庫(key-value data store)。對象

主要的 Git 對象——數據對象、樹對象、提交對象(「blob」「tree」 「commit」 )——最初均以單獨文件的形式保存在 .git/objects 目錄下it

簡化版的 Git 數據模型。

 

 

 

對象存儲

Git 會將上述頭部信息和原始數據拼接起來,並計算出這條新內容的 SHA-1 校驗和。Git 會經過 zlib 壓縮這條新內容。object

sha1計算:im

sha1sum "blob #{content.length}\0content"

SHA-1 值的前兩個字符做爲子目錄名稱,後 38 個字符則做爲子目錄內文件的名稱數據

 

參考:

https://git-scm.com/book/zh/v2/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-%E5%BA%95%E5%B1%82%E5%91%BD%E4%BB%A4%E5%92%8C%E9%AB%98%E5%B1%82%E5%91%BD%E4%BB%A4

相關文章
相關標籤/搜索