【工具】Git 子仓库管理

文章目录

    • [添加 submodule](#添加 submodule)
    • [克隆带 submodule 的仓库](#克隆带 submodule 的仓库)
    • [更新 submodule](#更新 submodule)
    • [删除 submodule](#删除 submodule)

更好的阅读体验https://wiki.dwj601.cn/develop/tools/git/submodule/


当项目依赖另一个仓库(例如公共工具库、第三方组件、自家多个项目共用的模块)时,可以用 git submodule 将它挂载进来,而不是复制代码。这样的好处在于:

  • 独立更新或回退子仓库版本;
  • 避免将子仓库的提交历史混入主仓库;
  • 保持版本可控,而不是直接拉取最新代码。

添加 submodule

bash 复制代码
git submodule add <submodule_remote_url> <submodule_local_path>

克隆带 submodule 的仓库

标准方法:

bash 复制代码
# 克隆主仓库
git clone <remote_url>

# 进入主仓库
cd <project>

# 初始化子模块配置
git submodule init

# 同步数据
git submodule update

一步到位(克隆时):

bash 复制代码
git clone --recurse-submodules <remote_url>

一步到位(克隆后):

bash 复制代码
# 克隆主仓库
git clone <remote_url>

# 进入主仓库
cd <project>

# 克隆子仓库
git submodule update --init

更新 submodule

submodule 并不会自动同步最新代码,需要手动更新。

bash 复制代码
# 进入子仓库目录
cd <submodule>

# 同步代码
git pull <submodule_remote_name> <submodule_branch>

删除 submodule

bash 复制代码
# 删除子仓库
git rm -rf <submodule>

# 删除子仓库缓存
rm -rf .git/modules/<submodule>

# 删除子仓库配置
git config -f .git/config --remove-section submodule.<submodule>
相关推荐
happyness4412 小时前
Git:AI编程时代的“安全带“与“时光机“
git·ai编程
To_OC12 小时前
踩坑无数!终于捋顺Git基础核心工作流(新手必看)
git·程序员
xuhaoyu_cpp_java17 小时前
Git学习(三)
经验分享·笔记·git·学习
C137的本贾尼18 小时前
Git基本操作(二):add与commit,把文件交给Git管理
git
咸鱼永不翻身19 小时前
Git Hooks—提交Commit前检查本地时间是否不对
git·git-hooks·git钩子
John_ToDebug19 小时前
如何针对指定目录生成 Git Patch 并精准应用到其他分支
chrome·git
Joy T20 小时前
【Web3】Hardhat工程架构中Solidity与TypeChain的协作机制
git·架构·typescript·web3·智能合约·hardhat·typechain
步十人20 小时前
【Git】基础概念与在vscode中的简单使用
git
代码中介商20 小时前
Git 版本控制完全指南:从分支管理到远程协作
linux·git
无风听海1 天前
git fsck 深度解析 Git 仓库的体检医生
git