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 log --oneline --decorate --graph --all
新建分支並同是切換到該分支上(帶 -b
引數的 git checkout
):
git checkout -b iss53
本作品採用《CC 協議》,轉載必須註明作者和本文連結