1. 程式人生 > 程式設計 >詳解git submodule HEAD detached 的問題

詳解git submodule HEAD detached 的問題

在使用git submodule 的時候,常常會遇到 執行完以下操作後發現 子倉庫的head 指標處於遊離狀態

  • git clone xxxxx.git
  • git submodule update --init

然後切換到子倉庫,檢視當前分支的狀態如下

詳解git submodule HEAD detached 的問題

原因是之前同事在子倉庫中修改並提交後,沒有在 父倉庫中更新子倉庫的最新提交記錄
正常情況下,修改子倉庫的內容並在子倉庫提交後會在父倉庫執行 git diff會有如下輸出

詳解git submodule HEAD detached 的問題

解決git submodule head detached的方法:

重新建立submodule,加入時使用-b引數,使得母專案追蹤子專案的指定branch(否則預設不追蹤):

git submodule add -b <branch> <repository> [<submodule-path>]
git submodule update --remote

簡單的一行命令遞迴修復所有子專案的detached head(其中預設都追蹤子專案的master branch):

git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'

參考

Why is my Git Submodule HEAD detached from master?
Git submodules best practices

到此這篇關於詳解git submodule HEAD detached 的問題的文章就介紹到這了,更多相關git submodule HEAD detached內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!