詳解git submodule HEAD detached 的問題
阿新 • • 發佈:2020-08-24
在使用git submodule 的時候,常常會遇到 執行完以下操作後發現 子倉庫的head 指標處於遊離狀態
- git clone xxxxx.git
- git submodule update --init
然後切換到子倉庫,檢視當前分支的狀態如下
原因是之前同事在子倉庫中修改並提交後,沒有在 父倉庫中更新子倉庫的最新提交記錄
正常情況下,修改子倉庫的內容並在子倉庫提交後會在父倉庫執行 git diff
會有如下輸出
解決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內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!