斷頭聽起來很可怕,但是其實只是HEAD
標籤跟master
標籤不在同個版本,或者是說HEAD
標籤沒有指向任何分支標籤。
以這張圖片說明,master
標籤指向版本號66b7de0
,HEAD
標籤指向b01407d
,現在這樣的情況就可以稱之為斷頭。
斷頭會怎麼樣呢?
以我自己遇到的情況來說,我其實就是寫到一半覺得寫太爛,想要回到過去某個版本重寫,於是checkout
到過去某個版本,然後從那個版本開始編輯,就這樣開始了斷頭之旅,看起來都很正常,可以正常commit
,但就是無法push
。
要push
時會一直顯示Loading畫面。
那要怎麼預防呢?
其實如果是用Xcode,最好的方法就是切換回去某版本後,並且要繼續編輯前,要建立一個分支,這樣那個版本就有分支標籤以及HEAD
標籤,就不會斷頭了。
如果已經斷頭了,要如何解決呢?
像我目前這張圖的狀態就是已經斷頭了,並且我又繼續編輯跟commit。
可以看到現在最新的版本號碼是fa1b3e3
,並且這邊沒有任何分支標籤,並且如果你用終端機下git status
,會發現HEAD
其實還在b01407d
上:
那怎麼辦呢,其實很簡單,只要在目前的版本上,新建立一個分支就好:
然後checkout
到新建的分支上:
最後可以在終端機下git status
指令來看看現在的狀態,沒有出現HEAD detached from b01407d
就代表解除斷頭狀態囉~