深入Git組件
- 經(jīng)過上一次的介紹摩梧,已經(jīng)對(duì)git的幾個(gè)組件比較了解了,
接下來我們繼續(xù)研究一下git的組件宣旱。
1.1 先創(chuàng)建一個(gè)文件夾障本,在文件中創(chuàng)建一個(gè)文件a.txt,
再在文件夾中創(chuàng)建一個(gè)文件,創(chuàng)建一個(gè)b.txt的文件 响鹃。
1.2 先使用命令git init 把這個(gè)文件變成一個(gè)
git的倉庫驾霜,會(huì)生成一個(gè).git的隱藏文件夾.使用命令
git status 查看狀態(tài),此時(shí)為Untracked狀態(tài)
在使用git status -s 查看
前面有兩個(gè)紅色的問號(hào)买置,說明git現(xiàn)在還不知道這兩個(gè)是
什么東西粪糙。
1.3 用命令git add .提交到暫存區(qū),再次使用
git status -s查看
兩個(gè)都為綠色的A說明這兩個(gè)文件已經(jīng)完成添加了.
注意在問號(hào)的時(shí)候是文件夾不知道忿项,當(dāng)我們提交到暫存區(qū)
之后再查看的時(shí)候文件已經(jīng)添加了蓉冈,說明我們的blob
組件已經(jīng)生成了,而blob所做的事就是存儲(chǔ)內(nèi)容轩触。
所以說blob組件針對(duì)的是文件寞酿,而不是文件夾.
1.4 查看.git隱藏文件中的objects文件夾的目錄會(huì)多出
兩個(gè)文件。因?yàn)閮?nèi)容不一樣所以生成了兩個(gè)blob組件.
1.5 使用git commit -m "xxx"之后再查看objects
文件夾
多了三個(gè)文件夾脱柱,我們來研究一下這些文件.
使用git log 我們會(huì)看到一個(gè)commit組件
查看commit組件 (git cat-file -p *****)伐弹,
我們會(huì)看到tree組件。此時(shí)現(xiàn)實(shí)有一個(gè)01和a.txt榨为,
a.txt是blob組件惨好,文件夾是tree組件煌茴。
所以我們每一個(gè)文件夾都會(huì)生成一個(gè)tree組件.
繼續(xù)查看這個(gè)tree組件.里面就是b.txt的blob組件
不管我們有多少文件夾,我們進(jìn)行add之后都不會(huì)對(duì)文件夾進(jìn)行處理
只會(huì)把文件夾的內(nèi)容添加進(jìn)去.那就是我們的blob組件.
當(dāng)我們執(zhí)行commit之后會(huì)把整個(gè)文件夾添加進(jìn)去日川,一個(gè)文件夾
就是一個(gè)tree組件.
1.6 我們先對(duì)文件a.txt和b.txt進(jìn)行修改.提交到暫存區(qū)蔓腐,
commit之后,再來查看commit組件此時(shí)會(huì)有一個(gè)
parent組件.
仔細(xì)觀察會(huì)發(fā)現(xiàn)parent組件是我們上一次commit
提交的組件龄句。
所以我們執(zhí)行git reset --hard HEAD^^的時(shí)候回论,
其實(shí)就是找我們的parent組件