git 分支原理介紹

參考文章

工做原理

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

相關文章
相關標籤/搜索