子模块
克隆
1 2 3 4 5 6 7 8 9
| git clone add https://github.com/USERNAME/REPO.git
git submodule init git submodule update --recursive
git clone https://github.com/USERNAME/REPO.git --recursive
|
添加
1 2 3
| git submodule add https://github.com/USERNAME/SUBREPO.git mymodule git push
|
说明:
- 拉取子模块,会新建
.gitmodule 文件(存储模块路径和仓库地址)、mymodule 目录(关联子模块项目)。
- 本地仅引用子模块,指向一个特定的哈希提交,和分支无关。
更新
1 2 3 4 5 6 7 8 9
| cd mymodule git pull git push
git submodule foreach git pull
git push
|
删除
git并没有直接提供对应的命令。
1 2 3 4 5 6 7 8 9 10
| git rm cached mymodule
rm rf mymodule
rm .gitmodules
git add . git commit -m 'remote submodule' git push
|
修改
主模块和子模块是独立的,主模块中应该仅可修改主模块中的内容,对子模块仅进行更新。