Git中的版本庫,暫存區,工作區

2021-07-22 16:55:50 字數 882 閱讀 4034

來自網友的歸納:

圖中左側為工作區,右側為版本庫。在版本庫中標記為index的區域為暫存區,標記為master的是master分支所代表的目錄樹。

圖中可以看出, 此時head實際是指向master分支的乙個「游標」,所以圖示的命令中出現head的地方可以用master來替換。

途中的objects標識的區域為git的物件庫,世紀位於 .git/objects目錄下。

當對工作區修改(或新增)的檔案執行git add命令時,暫存區的目錄樹會被更新,同時工作區修改(或新增)的檔案內容會被寫入到物件庫中的乙個新的物件中,而該物件的id被記錄在暫存區的檔案索引中。

當執行提交操作(git commit)時,暫存區的目錄樹會寫到版本庫(物件庫)中,master分支會做相應的更新,即master最新指向的目錄樹就是提交時原暫存區的目錄樹。

當執行git reset head命令時,暫存區的目錄樹會被重寫,會被master分支指向的目錄樹所替換,但是工作區不受影響。

當執行git rm –cached 命令時,會直接從暫存區刪除檔案,工作區則不做出改變。

當執行git checkout .或git checkout – 命令是,會用暫存區全部的檔案或指定的檔案替換工作區的檔案。這個操作很危險,會清楚工作區中未新增到暫存區的改動。

當執行git checkout head .或git checkout head 命令時,會用head指向的master分支中的全部或部分檔案替換暫存區和工作區中的檔案。這個命令也是極度危險的。因為不但會清楚工作區中未提交的改動,也會清楚暫存區中未提交的改動。

ps:摘抄自《git權威指南》

Git 工作區 暫存區 版本庫

工作區 我們會想當然的認為,當前倉庫所在目錄就是我們的工作區,其實這是不完全正確的。在當前倉庫中,新增,更改,刪除檔案這些動作,都發生在工作區裡面。暫存區 英文叫stage,或index。在版本庫.git 目錄下,有乙個index檔案。它實際上就是乙個包含檔案索引的目錄樹,像是乙個虛擬的工作區。在這...

Git 工作區 版本庫 暫存區

tags git 參考部落格 工作區 電腦裡能看到的目錄,就是我們建立的 learngit 資料夾。版本庫 工作區里有乙個隱藏的 git 目錄,這個就是 git 的版本庫。git 的版本庫里存了很多東西,其中最重要的就是稱為 stage 的暫存區,還有 git 為我們自動建立的第乙個分支 maste...

git 工作區 暫存區 版本庫

工作區 working directory 就是你在電腦裡能看到的目錄 版本庫 repository 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。暫存區 git的版本庫里存了很多東西,其中最重要的就是稱為stage 或者叫index 的暫存區,還有git為我們自動建立的第乙個分...