git子模块项目开发指南
git子模块项目开发指南
一、从远程仓库中克隆到本地(带有子模块)
git clone –recurse-submodules 父仓库地址
如:
1 | git clone --recurse-submodules "ssh://1016739@10.10.1.127:29418/app/android/Platin_ElderCare" && scp -p -P 29418 1016739@10.10.1.127:hooks/commit-msg "Platin_ElderCare/.git/hooks/" |
如果忘记加–recurse-submodules,可以在clone后执行
1 | git submodule init // 初始化子模块 |
或者
1 | git submodule update --init |
嵌套的(子仓库中包含子仓库)
1 | git submodule update --init --recursive |
- 如果修改了.gitmodules,要先执行同步
1
git submodule sync
二、添加一个新的子模块,并指定分支,默认master
1 | git submodule add -b <分支名> <仓库地址> <本地路径> |
三、修改子模块的代码(如同一般项目的处理)
1 | git add . |
四、在主项目中更新子模块
1 | git submodule update // 与主仓库中的子模块代码同步 |
注意:如果需要改动子模块的代码才能满足功能的话,要先在子模块的独立项目中修改代码,提交后再到主项目中更新同步
五、仅更新主项目,不自动更新子模块
1 | git pull --no-recurse-submodules |
六、修改需要同步的子模块分支(根据不同项目的需要更新不同的分支)
1 | git config -f .gitmodules submodule.[submodule-name].branch [branch-name] |
修改后的.gitmodules如下:
[submodule “mysub”]
path = sub
url = ../sub/.git
branch = develop
七、删除子仓库
- 反初始化
1
git submodule deinit -f <子模块>
- 删除.gitsubmodule里相关部分
- 删除.git/config 文件里相关字段
- 删除子仓库目录。
- git rm –cached <本地路径>
举例:
删除子模块:
1
2
3git submodule deinit -f -- path/to/submodule
git rm -f path/to/submodule
rm -rf .git/modules/path/to/submodule重新添加子模块:
1
2git submodule add [ -b <branch> ] <新的子模块URL> path/to/submodule
git submodule update --init --recursive提交更改:
1
2
3
4git add .gitmodules
git add path/to/submodule
git commit -m "Re-add submodule with new URL"
git push
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Fleming's Blog!

