git
的工做原理:git
git
版本控制是經過保存不一樣時間點的快照實現的。git
在提交操做時,git
會保存一個提交對象,該提交對象中會包含:版本控制
指向樹對象的指針(樹對象:git
經過計算每一個子目錄的校驗和,將其保存爲樹對象)指針
blob
對象索引git
的分支,其實本質上是指向提交對象的可變指針。因爲建立分支的高效性,因此,git
鼓勵開發人員建立分支!code
首先在建立 git
項目的時候,默認會建立 master
分支!這個 master
分支正常應該是指向最新一次提交。對象
head | master | one <- two <- thr
假設這個時候,用戶作了些修改,而後提交:索引
head | master | one <- two <- thr <- four
從上述兩個過程能夠看出,master
分支實際就是一個指向某次提交的指針!會根據用戶的提交自動向前移動指向最新一次提交。開發
若是用戶新建立了一個分支(test
)呢:get
git branch test
他的實際結果就是以下:it
head | master | one <- two <- thr <- four | test
由於這個時候用戶在 master
分支下,用戶再次作出修改提交:ast
test | one <- two <- thr <- four <- five | master | head
若是這個時候用戶切換到 test
分支(git checkout test
),作些修改而後再次提交:
head | test | <- five-for-test one <- two <- thr <- four <- five | master
他在 four
提交後,產生了兩條分支!!一個屬於 master
,一個屬於 test
。