Kurt/解決 Git submodule add error: "a git directory is found locally..."

Created Tue, 30 Aug 2022 11:56:04 +0800 Modified Wed, 02 Nov 2022 05:33:26 +0000
436 Words 2 min

解決 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

解決方式:

以下有幾種可能可以解決問題的方法,你可以逐一嘗試

  1. 輸入指令 git rm --cached {your-submodule-path}

  2. 打開 .gitmodules 檔案,此檔案是隱藏檔,需要設定顯示隱藏檔案,打開檔案後你會看到類似下方的文字

[submodule "{your-submodule-path}"]
    path = {your-submodule-path}
    url = {remote-repo-url}


# 如果在這個檔案裡有看到出錯的那個 submodule,就把該 config 刪除
  1. 打開 .git/modules 資料夾,如果在此資料夾有發現出錯的那個 submodule,將它移除

  2. 在主要的 repo 下找到 .git/config 檔案,打開後查看 submodule 的地方,大概會長的像下面這樣

[submodule "{your-submodule-path}"]
	url = {your-remote-repo-url}

# 如果在這個檔案裡有看到出錯的那個 submodule,就把該 config 刪除

以上步驟都檢查完了,再執行一次 git submodule add