參考文章
工作原理
git
的工作原理:
git
版本控制是通過保存不同時間點的快照實現的。git
在提交操作時,git
會保存一個提交對象,該提交對象中會包含:
- 用戶名
- 郵箱
- 提交信息
- 父指針,自然的,首次提交的對象是沒有父指針的,之後提交的對象纔有父指針
-
指向樹對象的指針(樹對象:
git
通過計算每個子目錄的校驗和,將其保存爲樹對象)- 目錄結構
-
blob
對象索引
git
的分支,其實本質上是指向提交對象的可變指針。由於創建分支的高效性,所以,git
鼓勵開發人員創建分支!
原理說明
首先在創建 git
項目的時候,默認會創建 master
分支!這個 master
分支正常應該是指向最新一次提交。
head
|
master
|
one <- two <- thr
假設這個時候,用戶做了些修改,然後提交:
head
|
master
|
one <- two <- thr <- four
從上述兩個過程可以看出,master
分支實際就是一個指向某次提交的指針!會根據用戶的提交自動向前移動指向最新一次提交。
如果用戶新創建了一個分支(test
)呢:
git branch test
他的實際結果就是如下:
head
|
master
|
one <- two <- thr <- four
|
test
因爲這個時候用戶在 master
分支下,用戶再次做出修改提交:
test
|
one <- two <- thr <- four <- five
|
master
|
head
如果這個時候用戶切換到 test
分支(git checkout test
),做些修改然後再次提交:
head
|
test
|
<- five-for-test
one <- two <- thr <- four
<- five
|
master
產生了一個新的分支!!