Git暫存區深入理解
關於暫存區的基本概念可以參閱Git工作區和暫存區一章節。
通過git add命令可以將工作區中指定內容加入暫存區,程式碼例項如下:
[Shell] 純文字檢視 複製程式碼$ git add readme.txt
上述程式碼將工作區中的readme.txt檔案加入到暫存區。
從“暫存區”名字來理解,此區域好像是一個倉庫,把將要提交的內容暫時存放於此。
上述理解從感性上來說沒什麼問題,並且有助於接受此概念。
然而暫存區的實質是什麼呢,僅僅是一個檔案罷了,截圖如下:
所謂的暫存區僅僅是.git目錄下的一個index檔案罷了,這也是為了什麼被稱為index(索引)。
下面先看一下當前專案的狀態,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git status
程式碼執行效果截圖如下:
可以看到readme.txt檔案被修改,位於暫存區待commit提交狀態。
現在看一下暫存區內容,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git ls-files --stage
程式碼執行效果截圖如下:
下面我們新增一個檔案並將其新增至暫存區,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ echo '螞蟻部落' > antzone.txt
新建一個antzone.txt檔案,並寫入字串"螞蟻部落"。
[Shell] 純文字檢視 複製程式碼$ git add antzone.txt
將新增的antzone.txt檔案新增至暫存區;再來看.git/index檔案中的內容:
[Shell] 純文字檢視 複製程式碼$ git ls-files --stage
程式碼執行截圖如下:
由此可見,暫存區叫做index(索引)才是實至名歸,的確是指向檔案的索引。
真正的檔案儲存在.git/objects目錄中,具體參閱Git儲存內容的位置與方式一章節。
下面將暫存區內容提交,並檢視提交後的狀態,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git commit -m "c5"
程式碼執行效果截圖如下:
由此可見,工作區沒有新增或者修改的檔案,暫存區也沒有待提交檔案。
再來看index檔案中的內容,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git ls-files --stage
程式碼執行截圖如下:
暫存區依然如故,並不像是我們感性上認為被清空。
當刪除暫存區內容的時候,其實就是刪除index檔案中的內容,.git/objects目錄中的內容不會被刪除。
刪除命令如下:
[Shell] 純文字檢視 複製程式碼$ git rm --cached readme.txt
相關文章
- git 乾貨系列:(二)深入學習之前先理解 git 暫存區Git
- Git清空暫存區Git
- Git工作區和暫存區Git
- Git 工作區、暫存區和版本庫Git
- Git暫存區內容恢復到工作區Git
- Git 暫存修改檔案 取消暫存Git
- Git 的工作區、暫存區、版本庫—— Git 學習筆記 15Git筆記
- Git刪除暫存區的指定檔案Git
- Git study Day01 暫存區, 撤銷Git
- git將工作區內容加入到暫存區Git
- git 工作流程以及Git 工作區、暫存區和版本庫(筆記)Git筆記
- 【第四篇】-Git 工作區暫存區和版本庫Git
- Git檢視暫存區index檔案內容GitIndex
- 深入理解 GitGit
- Git-命令列-使用 git stash 暫存程式碼Git命令列
- 暫存器定址和暫存器間接定址的區別
- 暫存
- CS 暫存器 和 IP 暫存器
- git plumbing 更加底層命令解析-深入理解GITGit
- 暫存器
- 深入理解學習Git工作流Git
- 理解ES6中的TDZ(暫時性死區)
- 深入理解equals和==的區別
- JVM-執行時資料區之PC暫存器JVM
- 關於STM32的BSRR(埠位設定/清除暫存器) 和 BRR(埠位清除暫存器) 的理解(初學32)
- Git理解Git
- 為什麼Modbus的只讀暫存器被稱為“輸入暫存器(Input Registers)”而不是“輸出暫存器”
- Git不暫存提交程式碼也能切換到別的分支(vs code搭配GitLens Git supercharged看效果)Git
- 通過一段彙編,加深對暫存器ESP和EBP的理解
- 【STM32】【暫存器】暫存器位讀寫方式配置系統時鐘
- CS、IP和PC暫存器
- Smali語法:Registers(暫存器)
- 【深入理解JVM】方法區 永久代 元空間JVM
- Java中HashMap和TreeMap的區別深入理解JavaHashMap
- 全面理解GitGit
- git的理解Git
- 【第四篇】-Git 工作區暫存區和版本庫之Spring Cloud直播商城 b2b2c電子商務技術總結GitSpringCloud
- Git取消合併(merge)、暫存修改(stash)、回退到某個版本(reset)的使用方法Git