了解git 中的HEAD指針&branch指針
HEAD指針
使用
git checkout
來移動HEAD指針,移動的對象可以是分支指針也可以是快照。
HEAD指針可以指向快照也可以指向branch。當指向branch時送出後會和branch指針一起向後移動,當不指向branch送出時時則會在一個detached狀态。
分支(branch)指針
git branch -f
來移動分支指針,移動的對象隻能是快照。當且僅當HEAD指針指向分支指針的時候,送出才會有效。
執行個體
1.HEAD指針預設指向目前的分支指針,用星号表示,如master*
master
2.移動HEAD指針,
git checkout C1
這個時候HEAD指針指向的是快照,這個時候指針的狀态稱之為遊離狀态,detached。
這裡寫圖檔描述
3.HEAD指針在遊離狀态下送出,
git commit
遊離狀态下送出的commit,沒有分支指針指向。可以在遊離狀态下的快照建立分支或強制移動已存在的分支
4.移動HEAD指針,讓他指向master分支指針
git checkout master
5.在master分支指針上送出
git commit
這個是正常的送出,和遊離狀态下的送出是不一樣的
6.給detached狀态下的快照添加分支。在3中我們提到給detached狀态下的快照增加分支的兩種方法。
6.1給detached狀态下的快照建立一個分支
6.1.1 将HEAD指針移動到detached狀态的快照
git checkout C2
6.1.2添加分支
git branch new
6.1.3将HEAD指針移動到new分支指針上就可以在new分支上送出了
git checkout new
6.2移動已存在的分支到detached狀态的分支
git branch -f master C2
這個時候master分支以前的快照C3就變成了detached狀态了