Git 工作區 暫存區和版本庫

2021-07-10 17:25:50 字數 722 閱讀 9913

暫存區(stage, index)是 git 最重要的概念之一,理解了這個概念很多 git 命令就不再那麼神秘了。我認為 git 暫存區(stage, 或稱為 index)的設計是 git 最成功的設計之一,也是最難理解的乙個設計。當執行 "git status" 命令掃瞄工作區改動的時候,先依據 .git/index 檔案中記錄的(工作區跟蹤檔案的)時間戳、長度等資訊判斷工作區檔案是否改變。如果工作區的檔案時間戳改變,說明檔案的內容 可能 被改變了,需要要開啟檔案,讀取檔案內容,和更改前的原始檔案相比較,判斷檔案內容是否被更改。如果檔案內容沒有改變,則將該檔案新的時間戳記錄到 .git/index 檔案中。因為判斷檔案是否更改,使用時間戳、檔案長度等資訊進行比較要比通過檔案內容比較要快的多,所以 git 這樣的實現方式可以讓工作區狀態掃瞄更快速的執行,這也是 git 高效的因素之一。

檔案 .git/index 實際上就是乙個包含檔案索引的目錄樹,像是乙個虛擬的工作區。在這個虛擬工作區的目錄樹中,記錄了檔名、檔案的狀態資訊(時間戳、檔案長度等),檔案的 內容並不儲存其中,而是儲存在 git 物件庫(.git/objects)中,檔案索引建立了檔案和物件庫中物件實體之間的對應。下面這個圖展示了工作區、版本庫中的暫存區和版本庫之間的關 系。

在這個圖中,我們可以看到部分 git 命令是如何影響工作區和暫存區(stage, index)的。

Git 工作區 暫存區和版本庫

暫存區 stage,index 是 git 最重要的概念之一,理解了這個概念很多 git 命令就不再那麼神秘了。今天在寫這部分的內容,畫了乙個圖,看看有沒有什麼問題。理解 git 暫存區 stage 把上面的 實踐二 從頭至尾走一遍,不知道您的感想如何?在 實踐二 的過程中,我有意無意的透漏了 暫存...

Git 工作區 暫存區和版本庫

暫存區 stage,index 是 git 最重要的概念之一,理解了這個概念很多 git 命令就不再那麼神秘了。今天在寫這部分的內容,畫了乙個圖,看看有沒有什麼問題。理解 git 暫存區 stage 把上面的 實踐二 從頭至尾走一遍,不知道您的感想如何?在 實踐二 的過程中,我有意無意的透漏了 暫存...

Git 工作區 暫存區和版本庫

暫存區和版本區的目錄結構如下圖 下面這個圖展示了工作區 版本庫中的暫存區和版本庫之間的關係 圖中左側為工作區,右側為版本庫。在版本庫中標記為 index 的區域是暫存區 stage,index 標記為 master 的是 master 分支所代表的目錄樹。圖中我們可以看出此時 head 實際是指向 ...