提交對(duì)象
提交對(duì)象(首次)及樹結(jié)構(gòu)
暫存操作( add )會(huì)為每一個(gè)文件使用 SHA-1 哈希算法計(jì)算校驗(yàn)和陶舞,然后會(huì)把當(dāng)前版本的文件快照保存到 Git 倉(cāng)庫(kù)中(Git 使用 blob 對(duì)象來保存它們)垄潮,最終將校驗(yàn)和加入到暫存區(qū)域等待提交吱殉。右上角的 5b1d3 就是校驗(yàn)和的一部分。
當(dāng)進(jìn)行提交操作(commit)時(shí),Git 會(huì)先計(jì)算每一個(gè)子目錄(本例中只有項(xiàng)目根目錄)的校驗(yàn)和鹦牛,然后在 Git 倉(cāng)庫(kù)中這些校驗(yàn)和保存為樹對(duì)象。 隨后勇吊,Git 便會(huì)創(chuàng)建一個(gè)提交對(duì)象曼追,它除了包含上面提到的那些信息外,還包含指向這個(gè)樹對(duì)象(項(xiàng)目根目錄)的指針汉规。如此一來礼殊,Git 就可以在需要的時(shí)候重現(xiàn)此次保存的快照。
Blob 對(duì)象保存著文件快照针史、樹對(duì)象記錄著目錄結(jié)構(gòu)和 blob 對(duì)象索引晶伦,提交對(duì)象包含著指向前述樹對(duì)象的指針和所有提交信息。上圖中因?yàn)槭鞘状翁峤蛔恼恚饕峤粚?duì)象中沒有 parent 指針婚陪。
提交鏈
可以從上圖發(fā)現(xiàn),非首次提交的提交對(duì)象都會(huì)有一個(gè) parent 指針频祝。