Git 分支操作

Galois發表於2020-01-18

Git 分支中的物件

每個 add 為一個 「blob」 檔案快照的物件,暫存操作會為每一個檔案計算校驗和(SHA-1 雜湊演算法)。
「tree」 為目錄結構和 blob 物件索引。
commit obj 指向 tree obj,tree obj 指向 blob objs。
master 為 Git 預設分支,是 git init 預設建立的。
「HEAD」為特殊指標,指向當前所在的本地分支。

Git 分支命令

分支建立:

$ git branch testing

檢視各分支當前所指的物件:

@ git log --oneline --decorate

分支切換(使 HEAD 指向 testing 分支):

$ git checkout testing

再提交一次:

$ vim test.rb
$ git commit -a -m 'made a change'

這時,testing 分支向前移動,但是 master 分支沒有,它仍然指向執行 git checkout 時所指向的物件,切換回 master 分支:

$ git checkout master

checkout master 使得「HEAD」指回 master 分支,將工作目錄恢復成 master 所指向的快照內容。這就是忽略了 testing 分支所做的修改,可以向另一個方向進行開發。

分支切換會改變你工作目錄中的檔案。

$ vim test.rb
$ git commit -a -m 'made other changes'

Git 分支操作

可以在不同分支間不斷地來回切換和工作,並在時機成熟時進行分支合併。
專案分叉歷史:

$ git log --oneline --decorate --graph --all

新建分支並同是切換到該分支上(帶 -b 引數的 git checkout):

git checkout -b iss53
本作品採用《CC 協議》,轉載必須註明作者和本文連結

不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章