以下示例: 父项目为box-server,子项目为box-deploy
添加submodule
cd box-servergit submodule add box-deploy-repository-url deploygit ci -m 'add submodule deploy'
clone含有submodule的项目
- 方法一(推荐)
git clone --recursive box-server-repository-url
- 方法二
git clone box-server-repository-urlgit submodule initgit submodule update
- 方法三
git clone box-server-repository-urlgit submodule update --init --recursive
检出子项目最新代码
方法一
git submodule update --remote(默认检出master分支)设置子模块跟踪仓库其它分支
git config -f .gitmodules submodule.deploy.branch developer
方法二
cd deploygit fetchgit merge origin/master
方法三
git submodule update --remote --merge(检出并合并)
其它
git pull --recurse-submodulesgit submodule foreach git checkout mastergit submodule foreach git pullgit submodule update --init --recursive
删除submodule
$ git submodule deinit -f -- deploy$ rm -rf .git/modules/deploy$ git rm -f deploy或$ git rm --cached deploy$ git commit -m "remove deploy submodule"
修改submodule url
修改.gitmodules文件对应submodule的url,然后执行$ git submodule sync。