git是來管理資料的,也儲存資料,所以可以說也是乙個資料庫,乙個特殊的資料庫,不同於rdbms和nosql的資料庫,一種索引資料可以快速查詢資料變化的資料庫。這
節我們學習git的物件儲存方式。
git為了快速查詢資料,將資料新增乙個header封裝為資料物件,然後進行hash,將此hash值當作物件名字,以後根據此hash值變可找到資料。具體的實現方式為:hash
值的前2位是檔案的目錄名字,後面的值為檔名。
由於進行hash,一旦檔案內容改變,其對應的hahs值就會變化,因而很適合變化的資料。
注意,本篇使用指標這個術語指代物件的hash值。
git總共有四類物件:
1 blob物件,就是存真正資料的物件。這種物件的sha-1 hash值只跟內容有關,跟檔名,檔案模式,hash時的時間沒有關係。
2 tree物件,管理物件的物件,其內容指出包含了哪些子物件,tree物件是遞迴的。跟blob指標,檔名,檔案模式有關,跟hash時的時間無關。
3 commit物件,git歷史記錄物件,裡邊儲存tree物件和父親commit物件,tree物件可以找到相應的資料,父親commit物件可以找到歷史紀錄。跟cache中的tree指標和hash時的時間有關,如果cache中的內容都一樣,不同時間生成的commit物件的hash值也不同。
4 tag物件,上面三種物件的別名表達方式。由於git物件對名字是hash值,所以很不容易記住,所以需要使用者自定義一些好記的名字指引別的物件。
原文:hongchangfirst
hongchangfirst的主頁:
深入理解程式 資料結構 演算法
程式 資料結構 演算法 研究程式 研究資料物件有哪些?用什麼樣的儲存方式去儲存這些資料物件?為資料物件選擇什麼樣的儲存型別?需要執行的操作有哪些?這樣的操作用什麼樣的演算法好一些呢?什麼樣的演算法算是好的演算法呢?時間複雜度最低!空間複雜度最低!其中時間複雜度由程式的控制結構決定,順序,選擇 o 1...
深入理解Redis 一 基本資料結構
個人主頁 tuzhenyu s page 內部資料結構主要包括 動態字串,雙端鍊錶,字典,跳躍表 記憶體對映資料結果主要包括 整數集合,壓縮列表 struct sdssds使用抽象結構中的len來判斷字元創的結尾,而不是像c一樣使用空字元 0 表示結尾,保證了二進位制的安全 typedef stru...
資料結構之深入理解紅黑樹
本文將會透徹理解什麼是紅黑樹,有什麼特點 優點與缺點,與其它樹結構 二叉查詢樹 平衡二叉樹 2 3 4樹 有什麼區別和聯絡。寫作本文的目的旨在加深自己的理解,文中許多內容參考了網路上的文章並根據自己的理解進行了整理。紅黑樹 英語 red black tree 一種二叉查詢樹,但在每個結點上增加乙個儲...