以下命令在CentOS系統下執行
創建Git倉庫
git init git-example
監控.git目錄的變化情況:
watch -n .5 tree .git
寫入文件內容,并把文件添加到Stage暫存區
echo 1 > t.txtgit add 1.txt
觀察結果如下:objects下多出了一個d00491fd7e5bb6fa28c517a0bb32b8b506539d4d的對象
git cat-file -p d00491fd7e5bb6fa28c517a0bb32b8b506539d4d? 查看對象的內容為1
git cat-file -t?d00491fd7e5bb6fa28c517a0bb32b8b506539d4d 查看對象的類型為blob
知識點:Git的Objects對象的名稱d00491fd7e5bb6fa28c517a0bb32b8b506539d4d計算方式是SHA1(<對象類型> <內容長度>\0<原始內容>)
SHA1(blob 2\01) 注意:在C語言中,\0用于標記字符串的結束。(不是\0字符本身,需使用printf輸出\0空字符)
(printf "blob 2\0"; echo "1") | sha1sum
計算SHA1便捷指令:
(printf "blob %d\0" $(wc -c < 1.txt); cat 1.txt) | sha1sum
提交Commit文件,查看Objects變化(多了2個Object,一個tree,一個commit)
git commit -m "first commit"
Tree對象的內容:
Commit對象的內容:
最后查看 master 分支的 head 指向,可以看到指向了最新提交對應 commit object 的 key
cat .git/refs/heads/master