
圖片發(fā)自簡(jiǎn)書App
什么是Git目錄
Git目錄一般就是指項(xiàng)目根目錄下的.git目錄,它是一個(gè)隱藏文件,所以如果在mac系統(tǒng)的終端或iterm工具進(jìn)入項(xiàng)目目錄后一般是看不到的,不過直接輸入cd .git就可以看到目錄的信息。
那么Git目錄是做什么用的呢?
每一個(gè)項(xiàng)目都只能有一個(gè)Git目錄,它是為你的項(xiàng)目存儲(chǔ)所有歷史和元信息的目錄,包括上文提到的所有對(duì)象(commits、trees、blobs、tags),而這些對(duì)象指向不同的分支。通過指令cd .git查看目錄的內(nèi)容,即可看到所有的重要文件如下:
* HEAD //表示這個(gè)git項(xiàng)目處在哪個(gè)分支里
* config //項(xiàng)目的配置信息,輸入`git config`相關(guān)命令將會(huì)改動(dòng)它
* description //項(xiàng)目的描述信息
* hooks //系統(tǒng)默認(rèn)鉤子腳本目錄
* index //索引文件
* logs //各個(gè)refs的歷史信息
* objects // 本地倉庫的所有對(duì)象 (`commits`, `trees`, `blobs`, `tags`)
* refs //項(xiàng)目里的每個(gè)分支指向了哪個(gè)`commit`
也許通過`cd .git`命令還會(huì)看到其他的文件或目錄,比如我的項(xiàng)目中還有branches、tree、sourcetreeconfig等,也許你的項(xiàng)目中還有其他與我也不同的東西,不過目前這些不重要,先知道以上幾個(gè)就好了。
Git目錄與Git工作目錄區(qū)別
Git的工作目錄只是用來臨時(shí)保存checkout過的用來編輯的文件的地方,可供編輯直到下次commit為止。
Git目錄用來保存所有歷史信息。
什么是Git索引
首先上圖:

areas.jpg
使用git的簡(jiǎn)單工作狀態(tài)是這樣的:你擁有一個(gè)git倉庫(repository),此刻我們說的是本地倉庫,而非遠(yuǎn)程的(remote)。把倉庫(repository)中的內(nèi)容
checkout出來,就得到了一個(gè)工作目錄(此圖中橙色的working directory),在工作目錄里你可以編輯與修改你的文件。而在你的工作目錄和倉庫之間還有一個(gè)暫存區(qū)(此圖中的staging area),它就是Git索引(index)。有了它,如果你提交了了一個(gè)commit或多個(gè)commit到倉庫,那么你commit的就是Git索引(index)中的內(nèi)容,而非工作目錄中的內(nèi)容。