模块使用分以下几个步骤
- 获取仓库的 URL
- 将代码以子模块的方式添加到工程中
- 使用反馈
1. 获取仓库的 URL
URL:
-
ssh :
git@xxx.git
-
http :
http://xxx.git
Note: 外部使用只能拉取 master
分支,其余分支用于开发者调试,测试使用。
2. 将代码以子模块的方式添加到工程中
2.1 添加子模块
git submodule add http://xxx.git third_party/xxx
Note: third_party/xxx
意思是将该模块的代码存放在 third_party
目录下的 xxx
文件夹中。
2.2 修改子模块引用
因主工程会修改子模块的默认配置文件,为了以后更新子模块方便,需要创建一个新的分支,基于新的分支修改。
cd third_party/xxx
git checkout -b <branch_name>
Note: 第一次添加子模块,主工程提交时最好打个 tag
,用于后续子模块更新时回退方便。
3. 使用反馈
如果在使用中发现子模块有 bug,此时可以采用以下两种方式处理:
-
自己直接在子模块分支上修改,然后提交 MR (Merge Request) ,由模块开发者合并到分支后,本地更新子模块即可。
1. 进入子模块目录 $ cd third_party/xxx 2. 修改子模块内容 xxx...xxx 3. 提交子模块代码 $ git add . $ git commit -m "modify annotation" $ git push <branch_name> origin/<branch_name> // 如果是第一次提交,远端不存在该分支,在推送时需要加上 --set-upstream 参数 4. 在 gitlab 上提交合并申请 (如下图) 开发者处理申请中。。。 5. 本地更新子模块 $ git pull $ git checkout <branch_name> // 需要切换到 2.2 小节自己创建的那个分支 $ git merge master // 将新的子模块更新到本地工程中,默认是 master 分支,如需特别指定其他分支,自己修改即可
合并申请流程:
- 直接告诉开发者,提出需求或者
bug
,由开发者自己解决,然后同步到服务器上,再告知使用者更新子模块即可。
**Note: 不要在子模块的默认分支修改代码,经过自己魔改了之后的代码,开发者看起来很吃力。一定要先新建分支再魔改,使用出来的 bug 交给开发者解决,方便自己也方便他人么。 **