解剖 .git 資料夾 part. 2 - Blob Object
在前面的 解剖 .git 資料夾 part. 1 - Git Init 我們已經初步瞭解了 .git 資料夾初始化後的結構,但是其中 objects 這個資料夾是空的,就讓我們來看看 執行 git add 後是如何將檔案存放在 objects 資料夾下 Blob object 介紹 由於目前我們還沒有任何的檔案,讓我們新增一個 README.md echo "This is readme." > README.md 再來執行 git add README.md 來將他加到 git 的索引裡,完成後 git status 的結果應該會像下面這樣: On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.md 這時候我們可以來看一下 .git/objects 下的檔案長什麼樣子 objects/ ├─ pack/ ├─ info/ └─ 52/ └─ cb6cdb81a64344370c918a301eb153035f915a blob object 內容 這時候多了一個名字叫 52 的資料夾,底下有一個檔案叫 cb6cdb81a64344370c918a301eb153035f915a ,如果你把他打開會發現內容是看不懂的 $ xxd .git/objects/ 52 /cb6cdb81a64344370c918a301eb153035f915a 00000000 : 7801 4 bca c94f 5230 3463 08 c9 c82c 5600 x.K..OR04c...,V. 00000010 : a2a2 d4c4 94 dc 543 d 2 e00 5 ee3 0781 ......T=..^... 原因是所有在 object file 下的檔案都會經過 zlib 壓縮後存放,解壓縮後我們可以看到 object file 的內容是由以下的結構所組成 blob + 空格 + 檔案大小 + zer