Git 的工作区、暂存区、版本库—— Git 学习笔记 15
Git 的工作區、暫存區、版本庫
大家都知道,在 Git 系統中有 “三棵樹” 的概念。
注意:“樹” 在這里的意思是 “文件集合”,而不是指特定的數據結構。
基本概念
| HEAD(版本庫) | 上一次提交的快照,下一次提交的父結點 |
| Index(暫存區) | 預期的下一次提交的快照 |
| Working Directory(工作區) | 沙盒 |
HEAD
HEAD 是當前分支引用的指針,它總是指向該分支上的最后一次提交。 這表示 HEAD 將是下一次提交的父結點。 通常,可以把 HEAD 看做你的上一次提交的快照。可以簡單理解為: HEAD 指向分支(branch),分支指向提交。
Index
Index(索引,或暫存區)是你預期的下一次提交。這就是當你運行 git commit 時 Git 看起來的樣子。Git 將上一次檢出到工作目錄中的所有文件填充到 Index,之后你會將其中一些文件替換為新版本,接著通過 git commit 將它們轉換為樹來用作新提交。
工作目錄
另外兩棵樹以一種高效但并不直觀的方式,將它們的內容存儲在 .git 文件夾中。工作目錄會將它們解包為實際的文件以便編輯。 你可以把工作目錄當做 “沙盒”,在你將修改提交到暫存區并記錄到歷史之前,可以隨意更改。
工作區、暫存區、版本庫原理圖
在這個圖中,可以看到部分 Git 命令是如何影響工作區和暫存區的。
圖中左側為工作區,右側為版本庫。在版本庫中標記為 index 的區域是暫存區。標記為master的是master分支所代表的目錄樹。
圖中可以看出此時HEAD實際是指向master分支的一個“游標”。所以圖示的命令中出現HEAD的地方可以用master來替換。
圖中的 objects 標識的區域為 Git 的對象庫,實際位于 .git/objects目錄下。
參考資料
【1】 廖雪峰:https://www.liaoxuefeng.com/wiki/
【2】《Git 權威指南》
【3】《Pro Git》(Scott Chacon, Ben Straub Version 2.1.14, 2018-05-19)
總結
以上是生活随笔為你收集整理的Git 的工作区、暂存区、版本库—— Git 学习笔记 15的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 通过ip获取城市_pyth
- 下一篇: ios 可以为空声明_iOS开发中使用O