(2)工作區:在壹個項目目錄中,除了.git文件的其他所有文件的集合就是工作區。
(3)暫存區:暫存區可以理解為文件從修改到最後提交到git版本庫之間的壹個緩存,為了防止壹次提交了不必要的文件,有回退的余地,便有了暫存區。
(4)HEAD:HEAD在.git文件夾中是壹個文件,文件的內容是壹個32位的16進制數,這只是壹個指針,他指向最近壹個提交點、這個提交點實質是壹個commit對象,對象裏包含裏多個屬性,包括最後壹個提交點目錄結構索引、上壹次提交點id、提交人、提交時間等。
(1) 首先,跟著我的思路,我們來創建壹個git倉庫, 通過壹個例子來理解git add命令
1、首先,我們通過git init來創建壹個倉庫,這時會生成壹個.git文件夾,這個文件夾就壹個git倉庫
2、創建壹個文件A.java
執行 git add A.java
到.git裏面的objects文件中,發現,多了壹個文件夾,打開,裏面有壹個文件,名字是壹串符號,打開這個文件,裏面是壹串無法識別的字符。
git add做了啥?
其實,在執行git add命令的時候,git首先會通過hash函數算出文件名A.java對應的sha-1值是1fed2a34f13dd2a34f13d,這個code是壹個32位的16進制數,git會取這個code的前兩位作為文件夾名在.git/objects文件夾中創建壹個文件夾1f,取code的後30位作為文件名,在.git/objects/1f中創建壹個文件ed2a34f13dd2a34f13d,git會將A.java的文件內容通過壹定的壓縮保存在這個文件中
未完待續.....
本文到這裏就快結束了,文中可能有些地方沒有說明清楚,歡迎指定討論,有問題歡迎騷擾,看到會第壹時間回復!