Git Mechanism<3> commit

接下來我們繼續(xù),將文件commit到版本庫(repository):

$ git commit -m 'commit A.txt'
[master (root-commit) f225037] commit A.txt
 1 file changed, 1 insertion(+)
 create mode 100644 A.txt

再來看看objects里面的變化:

image.png

這一次又多了2個東西,我們先查看完整的信息:

$ find .git/objects/
.git/objects/
.git/objects//f2
.git/objects//f2/250375e5113c7994b7f15cf51a2a48bf98cf7e
.git/objects//pack
.git/objects//info
.git/objects//f7
.git/objects//f7/0f10e4db19068f79bc43844b49f3eece45c4e8
.git/objects//12
.git/objects//12/ed70cbd523efd5f5209b9d6fb20bc9fd7fbb4c

再使用分析命令逐一分析:

$ git cat-file -t 12ed
tree
$ git cat-file tree 12ed
100644 A.txt????y?C?KI???E??

$ git cat-file -t f225
commit
$ git cat-file commit f225
tree 12ed70cbd523efd5f5209b9d6fb20bc9fd7fbb4c
author xxx <xxx@xxx.com> 151....551 +0800
committer xxx <xxx@xxx.com> 151....551 +0800

commit A.txt

得到的結(jié)果就是:
1.tree記錄的是指向文件A.txt的地址,準(zhǔn)確的說是指向暫存區(qū)(stage)的index
2.commit記錄的是備注信息,即git commit -m 'commit A.txt'中```單引號里的內(nèi)容。

最后我們看一下提交的記錄:

$ git reflog
f225037 (HEAD -> master) HEAD@{0}: commit (initial): commit A.txt

是否有發(fā)現(xiàn)f225037似曾相識?其實就是指的commit !

image.png

結(jié)論:

1.git commitobjects下新增一個tree和一個commit文件。
2.tree:一個單獨(dú)的tree對象包含一條或多條tree 記錄,每一條記錄含有一個指向 blobtree 對象的 HS-1 指針,并附有該對象的權(quán)限模式 (mode)、類型和文件名信息(后面會詳細(xì)解讀);
3.commit記錄的是treeHS-1值 ;
3.HEAD -> master -> commit -> tree ;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容