網頁

2019/9/22

Git HEAD detached at remote branch問題

今天從遠端clone一個專案下來,然後用git checkoutorigin/master切到另一條遠端分支origin/dev

$ git checkout origin/dev

此時輸入git status時,出現HEAD detached at origin/dev的訊息。


$ git status
HEAD detached at origin/master
nothing to commit, working tree clean

原因是因為當HEAD並沒有指向任何本地分支(local branch)時即為HEAD detached狀態,而我在上面的操作是直接把HEAD指向遠端分支origin/dev,而HEAD並沒有指向任何本地分支。

解決的方式是用git branch --track指令建立一條本地分支dev並使其追蹤遠端分支origin/dev

$ git branch --track dev origin/dev    

此時雖然建立了追蹤遠端分支origin/dev的本地分支dev,但此時HEAD仍是指向遠端分支origin/dev而非本地分支dev,依舊是HEAD detached狀態。

因此接著要把HEAD指向本地分支dev,使用git checkout指令切換到dev

$ git checkout dev 

一旦HEAD有了指向的本地分支後,HEAD detached at origin/dev的狀態就會消失了。


要避免這個問題,一開始在checkout remote branch時,應該改用git checkout -t <remote_branch>指令,如此便會自動建立一個與遠端同名的本地分支,並以此本地分支追蹤遠端分支。例如剛剛checkout origin/dev遠端分支應改成如下:

$ git checkout -t origin/dev 

這樣就會自動一個本地分支dev,並以此追蹤遠端分支origin/dev

參考:

沒有留言:

張貼留言