3 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
關(guān)于這些主題的一些其他好的參考:
我使用索引作為檢查點(diǎn)。
當(dāng)我即將做出可能出錯(cuò)的改變時(shí) - 當(dāng)我想探索某個(gè)方向時(shí),我不確定我是否可以繼續(xù),或者是否這是一個(gè)好主意,例如概念要求重構(gòu)或更改表示類型 - 我檢查我的工作到索引。如果這是我自上次提交以來所做的第一次更改,那么我可以使用本地存儲庫作為檢查點(diǎn),但通常我有一個(gè)概念上的更改,我正在實(shí)現(xiàn)一組小步驟。我希望在每個(gè)步驟之后檢查點(diǎn),但保存提交,直到我回到工作,測試代碼。
筆記:
該工作區(qū)是你看到的(源)文件和編輯目錄樹。
該指數(shù)是一個(gè)單一的,大型的二進(jìn)制文件
<baseOfRepo>/.git/index
,其中列出了當(dāng)前分支中的所有文件,它們的SHA1校驗(yàn)和,時(shí)間戳和文件名-它不是在它的文件副本的其他目錄。在本地資源庫是一個(gè)隱藏目錄(
.git
),包括objects
含回購每個(gè)文件的所有版本(本地分支機(jī)構(gòu)和遠(yuǎn)程分支機(jī)構(gòu)的副本),為壓縮“斑點(diǎn)”文件目錄。不要將上圖中表示的四個(gè)“磁盤”視為repo文件的單獨(dú)副本。
它們基本上是Git提交的命名參考。有兩種主要類型的參考:標(biāo)簽和頭部。
標(biāo)簽是標(biāo)記歷史中特定點(diǎn)的固定引用,例如v2.6.29。
相反,總是移動頭來反映項(xiàng)目開發(fā)的當(dāng)前位置。
(注意:正如Timo Huovinen 評論的 那樣,這些箭頭不是提交所指向的,它是工作流程順序,基本上顯示箭頭,因?yàn)榈谝淮翁峤坏奈恢檬亲詈笠淮危?a >1 -> 2 -> 3 -> 4
1
4
現(xiàn)在我們知道項(xiàng)目中發(fā)生了什么。
但要知道這里發(fā)生了什么,現(xiàn)在有一個(gè)特殊的參考叫做HEAD。它有兩個(gè)主要目的:
它告訴Git哪個(gè)提交從結(jié)賬時(shí)拿走文件,然后
它會告訴Git在提交時(shí)將新提交放在哪里。
當(dāng)你運(yùn)行
git checkout ref
它時(shí)指向HEAD
你指定的引用并從中提取文件。當(dāng)您運(yùn)行git commit
它時(shí),它會創(chuàng)建一個(gè)新的提交對象,該對象將成為當(dāng)前的子對象HEAD
。通常HEAD
指向其中一個(gè)頭部,所以一切都很好。

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
HEAD(當(dāng)前分支上的當(dāng)前分支或最后提交狀態(tài)),索引(也稱為暫存區(qū)域)和工作樹(結(jié)帳中的文件狀態(tài))之間的區(qū)別在“1.3 Git Basics ” 的“三態(tài)”部分中描述Scott Chacon 的Pro Git一書(Creative Commons行貨)。
以下是本章的圖片說明:
在上面的圖像中,“工作目錄”與“工作樹”相同,“暫存區(qū)域”是git“index”的備用名稱,HEAD指向當(dāng)前簽出的分支,該尖端指向上次提交的“ git目錄(存儲庫)“
請注意,這git commit -a
將在一個(gè)步驟中進(jìn)行更改和提交。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
您的工作樹就是您當(dāng)前正在處理的文件中的實(shí)際內(nèi)容。
HEAD
是指向您上次檢出的分支或提交的指針,如果您創(chuàng)建它,它將是新提交的父級。例如,如果您在master
分支上,那么HEAD
將指向master
,并且當(dāng)您提交時(shí),新提交將是master
指向的修訂的后代,并且master
將更新為指向新提交。
該指數(shù)是一個(gè)臨時(shí)區(qū)域,其中新提交準(zhǔn)備。本質(zhì)上,索引的內(nèi)容將進(jìn)入新的提交(盡管如此git commit -a
,這將在提交之前自動將所有更改添加到Git知道的文件中,因此它將提交工作樹的當(dāng)前內(nèi)容)。git add
將工作樹中的文件添加或更新到索引中。
- 3 回答
- 0 關(guān)注
- 1634 瀏覽
添加回答
舉報(bào)