场景介绍
协同开发模式,组件库与业务项目同时开发,常规做法
- npm
- subModule
- subTree
在 subModuele
与 subTree
探索,这里对比下两者,两者都是将组件库作为业务项目的一部分进行协同开发,区别如下
一、subModule 方式
1. 安装
使用 submodule 的方式安装, 父仓库中使用命令添加子仓库(SubModule)
git submodule add http://xxx.git src/SubModule
添加成功后,在项目src目录中能够看到新增的文件夹SubModule。 另外新增了文件.gitmodules,在里面增加了对SubModule的一些描述。
2. 更新
在父仓库目录下git pull之后,立即执行
git submodule update --remote
3. 删除SubModule
- 删除.gitmodules
- 删除.git/config 相关配置
- 删除.git/modules
- 删除子仓库目录(src/SubModule)
执行命令
git rm --cached <本地路径>
// eg:
git rm --cached src/SubModule
4. 缺点
无法控制 SubModule 经常会有场景问题
不想用户更改 SubModule 比较难以实现
二、subTree 方式
1. 简化远程子仓库地址
这里把子仓库的地址作为一个远程仓库地址,设置别名 sub ( 名称随意)
git remote add -f sub http://git.xxx.git
2. 添加 subtree
仅在新建项目或者首次添加 subtree 时,添加一次即可
git subtree add --prefix=src/subTree sub master
3. 从源仓库拉取更新 subtree
如果 组件 仓库更新了,可以从源仓库拉取更新,使用 git subtree pull
git subtree pull --prefix=subtrees/subtreeA http://xxxxxxxx/subtree-project.git master
// eg
git subtree pull --prefix=src/subTree sub master
4. 推送修改到源仓库
当前需要贡献组件给 subtree
如果在父仓库里修改了sub(源仓库)代码,使用 git subtree push命令。 为防止本地冲突,建议push前先执行源仓库pull命令,拉取最新的代码:
git subtree pull --prefix=src/subTree sub master --squash
git subtree push --prefix=src/subTree sub master
5. 父仓库删除 subtree
- 手动删除父仓库 src/subTree 文件夹
- commit 提交到父仓库
6. 报错处理
Working tree has modifications. Cannot add.
解决办法:
- 检查本地修改是否都提交,如有,则需要先提交本地业务项目的修改;
- 尝试切换到本地其他分支,再切换回来
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!