睡睡念
同事的新專案有用到 git的submodule,
之前也用過一次了,想說應該還好,
但這次就是怎麼驗證,怎麼不過。
正文
都是出現這個錯誤
Cloning into ‘/drone/src/BackendSharedLib’…
Host key verification failed.
fatal: Could not read from remote repository.
![[145-fig.1.jpg]]
但之前寫的專案就沒這個問題,找阿找,最後終於發現,
差異在 建立 submodule的時候。
打開 .gitmodules 上面會寫 url的位置
[submodule "SMSBackendSharedLib"]
path = SMSBackendSharedLib
url = git@github.com:ABC/sms-backend-sharedlib.git
本來是上面這種寫法,他會用ssh的方式去抓submodule的檔案。
所以要把url改成
[submodule "SMSBackendSharedLib"]
path = SMSBackendSharedLib
url = https://github.com/ABC/sms-backend-sharedlib.git
再來用
git submodule update --init --recursive
本機也可以下載了。
本來還懷疑是不是drone clone submodule的時候,用到錯誤的使用者。
結果一查根本沒有使用者。
可以用下面的指令查查
git config --list
git config user.name
git config user.email
簡單解釋一下 submodule,
以下從chatGPT抄來的。
在 Git 中,Submodule 是一個允許您在 Git 倉庫中包含另一個 Git 倉庫的機制。通過使用 Submodule,您可以將一個 Git 倉庫作為另一個 Git 倉庫的子目錄進行管理。這對於管理大型專案或共享程式庫非常有用。
當您在 Git 倉庫中新增 Submodule 時,它實際上是包含另一個 Git 倉庫的指向。當您 clone 或 pull 主倉庫時,Git 只會下載 Submodule 的指向,而不會將 Submodule 的內容一併下載。這樣可以節省空間和時間,同時還可以使主倉庫更加輕便。
如果您想要更新 Submodule 的內容,可以使用 git submodule update 命令來下載 Submodule 的內容。當您修改 Submodule 的內容時,您需要先進入 Submodule 的目錄,對其進行 commit 和 push,然後返回主倉庫,對 Submodule 的指向進行 commit 和 push。這樣可以確保 Submodule 的指向指向正確的 commit。
總之,Submodule 是一個非常有用的機制,可以使 Git 倉庫管理更加靈活和有效。
0 意見:
張貼留言