這裡出現了三個名詞:
工作區,
暫存區,
版本庫.
工作區:
你工作的地方
,你在**工作呢
?肯定是你的電腦上
,那麼工作區就是你在電腦裡能看到的目錄
.暫存區:
英文名叫
stage
或者index.
聽名字就知道是暫時的
,不是永久的
,資料會經常的發生變化
,這個區域一般存放在』git目錄』下的index
檔案(.git/index)中,
我們把暫存區有時候也叫做索引
(index).
版本庫:
工作區中有乙個隱藏目錄
.git,
這個不算工作區,而是
git的版本庫
簡單說一下這個圖,圖中的左側為工作區
,右側為版本庫
.在版本庫中標記為』index』的區域就是暫存區(stage
或者index),
標記為』master』的是master
分支所代表的目錄樹
.圖中我們可以看出此時」head」實際是指向master
分支的乙個』游標』.所以圖示的命令中出現
head
的地方可以用
master
來替換.
圖中objects
標識的區域為
git的物件庫
,實際位於』.git/object』目錄下,
裡面包含了建立的各種物件以及內容
.當對工作區修改(
或新增)
的檔案執行」git add」命令時,
暫存區的目錄樹被更新
,同時工作區修改
(或新增
)的檔案內容被寫入到物件庫中的乙個新的物件中
,而該物件的
id被記錄在暫存區的檔案索引中
.
當執行提交操作(git commit)時,
暫存區的目錄樹寫到版本庫
(物件庫)中
,master
分支會做相應的更新.即
master
指向的目錄樹就是提交暫存區的目錄樹
.
當執行』git reset head』命令時,
暫存區的目錄樹會被重寫,被
master
分支指向的目錄樹所替換
,但是工作區不受影響
.
當執行』git rm --cached 』命令時,
會直接從暫存區刪除檔案
,工作區則不會做出改變
.
當執行』git checkout head』或者』git checkout head 』命令時,
會用head
指向的master
分支中的全部或者部分檔案替換快取區以及工作區中的檔案
.這個命令也是極具危險性的
,因為不但會清楚工作中未提交的改動
,也會清楚暫存區中未提交的改動
.這裡主要的是說一些git
在執行命令的時候
,各個檔案的情況和變動情況
.
Git 工作區 暫存區和版本庫
暫存區 stage,index 是 git 最重要的概念之一,理解了這個概念很多 git 命令就不再那麼神秘了。今天在寫這部分的內容,畫了乙個圖,看看有沒有什麼問題。理解 git 暫存區 stage 把上面的 實踐二 從頭至尾走一遍,不知道您的感想如何?在 實踐二 的過程中,我有意無意的透漏了 暫存...
Git 工作區 暫存區和版本庫
暫存區 stage,index 是 git 最重要的概念之一,理解了這個概念很多 git 命令就不再那麼神秘了。今天在寫這部分的內容,畫了乙個圖,看看有沒有什麼問題。理解 git 暫存區 stage 把上面的 實踐二 從頭至尾走一遍,不知道您的感想如何?在 實踐二 的過程中,我有意無意的透漏了 暫存...
Git 工作區 暫存區和版本庫
暫存區 stage,index 是 git 最重要的概念之一,理解了這個概念很多 git 命令就不再那麼神秘了。我認為 git 暫存區 stage,或稱為 index 的設計是 git 最成功的設計之一,也是最難理解的乙個設計。當執行 git status 命令掃瞄工作區改動的時候,先依據 git ...