解決 Git submodule add error: “a git directory is found locally…”
問題
會出現此錯誤是因為在移除 submodule 時沒有移除乾淨所至。
此問題發生在我移除了一個 submodule,之後又新增了相同名稱的 submodule(不同 repo),例如:我移除 “xxx/xxx” 個 submodule,然後我又新增了一個 submodule,並且路徑也設為 “xxx/xxx”,這時就可能遇到此問題!
稍微提一下我是用以下指令移除 submodule :
git rm -fr {my-submodule-path}
git commit -m "remove submodule xxx"
git push
解決方式:
以下有幾種可能可以解決問題的方法,你可以逐一嘗試
-
輸入指令
git rm --cached {your-submodule-path}
-
打開 .gitmodules 檔案,此檔案是隱藏檔,需要設定顯示隱藏檔案,打開檔案後你會看到類似下方的文字
[submodule "{your-submodule-path}"]
path = {your-submodule-path}
url = {remote-repo-url}
# 如果在這個檔案裡有看到出錯的那個 submodule,就把該 config 刪除
-
打開 .git/modules 資料夾,如果在此資料夾有發現出錯的那個 submodule,將它移除
-
在主要的 repo 下找到 .git/config 檔案,打開後查看 submodule 的地方,大概會長的像下面這樣
[submodule "{your-submodule-path}"]
url = {your-remote-repo-url}
# 如果在這個檔案裡有看到出錯的那個 submodule,就把該 config 刪除
以上步驟都檢查完了,再執行一次 git submodule add