在git项目中操作子git项目(子模块)
新建
在项目根路径下,将另外一个git项目初始化为当前项目的子模块
命令格式:git submodule add <子模块仓库URL> <子模块存放路径>
git submodule add <git@e.coding.net:*****.git> sub
另外一个项目会克隆在当前路径下的子模块存放路径sub
中
同时会生成一个.gitmodules
文件保存子模块信息
[submodule "sub"]
path = sub
url = git@e.coding.net:*****.git
查看项目中所有子模块
git submodule status
-7ab1de2d21d3c4e56f7890123456789012345678 sub1 (heads/main)
-1234567890123456789012345678901234567890 sub2 (heads/master)
克隆
默认情况下,clone一个带有子模块的项目时,只会把子模块所在的文件夹克隆下来,结果是一个空文件夹
- project/
- src/ # 完整目录结构
- sub/ # 空目录
- build.gradle.kts
- gradlew
- gradlew.bat
- README.md
这时,需要初始化子模块
git submodule init
此命令依据当前项目的.gitmodules
文件记录的子模块信息初始化所有子模块
如果需要只初始化指定子模块,需要添加参数
git submodule init -- sub1 sub2 sub3 ... subn
update
命令更新所有子模块。若需要更新指定子模块,格式同init
命令
# 初始化所有子模块
git submodule update
# 初始化指定子模块
git submodule update -- sub1 sub2 sub3 ... subn
移除
移除子模块文件
git submodule deinit -f sub1
移除子模块git目录
rm -rf .git/modules/sub1
更新项目git索引
git rm --cached sub1
提交变更
git commit -m "Remove submodule: sub1"
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果