這是一份給自己的、簡單而又基礎的 Git Submodules 備忘錄。
因為發現自己一到用的時候就忘了,結果就是一遍又一遍問 GPT...
克隆帶有 Git Submodules 的倉庫#
# 方法一,一步到位
git clone --recurse-submodules <主倉庫URL>
# 方法二,常規方式,較繁瑣
git clone <主倉庫URL> <主倉庫目錄?>
cd <主倉庫目錄>
git submodule update --init --recursive
添加 Submodules 到當前倉庫#
git submodule add <子模塊倉庫URL> [路徑]
更新現有的 Submodules#
根據記錄的子模塊的 Commit ID 來更新子模塊
- 當子模塊倉庫有了更新
- 當主項目引用的子模塊的提交點改變
git submodule update --init --recursive
更新現有 Submodules 到最新提交#
# 進入 Submodules 並拉取最新更改
cd path/to/my-submodule
git pull
# 在主項目的根路徑下,保存提交
git add path/to/my-submodule
git commit -m "chore: update submodule"
更新現有 Submodules 的倉庫地址#
# 編輯 .gitmodules 文件,修改 url 欄位
# 將 .gitmodules 中的變更同步到 .git/config
git submodule sync
# 更新 Submodules
git submodule update --init --recursive
# 保存並提交
git add .gitmodules
git commit -m "chore: update submodule url"
git push
刪除現有 Submodule#
# 通過 git 刪除 Submodule 目錄
git rm -f <submodule_path>
# 編輯 `.gitmodules` 和 `.git/config` 文件
# 找到並刪除與該 Submodule 相關的那一段配置,如下
# [submodule "submodule_name"]
# path = submodule_path
# url = https://github.com/username/repo.git
# 刪除 Submodule 目錄下的 `.git` 目錄引用。
# 如果之前使用 `git rm`,此步驟應該已經自動完成。
# 提交更改
git add .
git commit -m "chore: remove submodule"
# 在 `.git/modules` 中刪除 Submodule 相關數據
rm -rf .git/modules/<submodule_path>