Git 子模块适用于将一个 Git 仓库嵌套为另一个仓库的子目录,常用于包含外部依赖或共享组件。
🔗 添加子模块(会生成 .gitmodules 文件)
git submodule add https://git.xxx.xyz/xxx/xxx.git [路径]
- [路径]:可选,指定克隆到的子目录名,默认跟项目同名。
添加后会生成或更新 .gitmodules 文件,记录子模块路径和地址。
示例:
git submodule add https://git.xxx.xyz/common/ui-library.git libs/ui
⏬ 初始化并拉取子模块(用于首次克隆、拉取等场景)
git submodule update --init
如果需要递归初始化所有嵌套子模块,可使用:
git submodule update --init --recursive
🔄 常用子模块命令
操作 | 命令 |
---|---|
克隆带子模块的项目 | git clone –recursive <repo地址> |
拉取后初始化子模块 | git submodule update –init |
提交后同步子模块信息 | git add .gitmodules <子模块路径> && git commit -m “添加子模块” |
更新子模块到远端最新 | git submodule update –remote |
💡 避免 git pull 时需频繁输入分支名
如果每次都需要 git pull origin main,可能是当前处于游离(detached HEAD)状态。可切换到指定分支修复:
git checkout main
若分支名称不是 main,也可以查看分支列表后切换:
git branch -a # 查看所有本地/远程分支
git checkout <分支名> # 切换到指定分支
📝 提示:
- 子模块不会自动随主仓库同步更新,需要手动执行 git submodule update。
- 推荐克隆含子模块的仓库时添加 –recursive 参数。
- 若子模块更新频繁,可考虑使用 Git Subtree 或 Package 管理方式替代。
作者:freed 创建时间:2025-03-28 10:35
最后编辑:freed 更新时间:2025-03-28 10:35
最后编辑:freed 更新时间:2025-03-28 10:35