# vDrag组件仓库 **Repository Path**: ImplementDreams/vDrag-components ## Basic Information - **Project Name**: vDrag组件仓库 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2022-03-10 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 组件子仓库 submodule 简明教程 ## 克隆所有组件的父仓库 ```bash git clone http://192.168.51.240/components-group/all-components.git ``` 打开目录后,可以看到子组件的目录都是空的, 这时执行拉取某个组件的命令, 假设需要拉取子仓库 **button** ```bash git submodule init button git submodule update button ``` 拉取所有的子组件仓库: ```bash git submodule init && git submodule update ``` 完成后所有子仓库就已经更新完毕。 ## 开发组件 假设子组件仓库为 **baseButton**, 进入子仓库,修改代码,提交。 ```bash cd baseButton git checkout master git add . git commit -m 'feat: change code ...' git push origin master # 需要注意如果当前分支没在master分支,而是一个HEAD的分离分支, 执行 git push origin HEAD:master ``` 回到父仓库 **all-components** ```bash cd all-components git status # 父仓库本身没有变动,而子模块 **baseButton** 有变动 git add baseButton git commit -m "update submodule baseButton" git push ``` 在 [all-components提交记录 ](http://192.168.51.240/components-group/all-components/-/commits/master)中可以看最新一次提交, 可以看到子模块的最新commit已经更新了。 ![](./commit-change.png) ## 新增子组件仓库 假设新组件为 **newComp** ```bash git init --initial-branch=master git remote add origin http://192.168.51.240/components-group/sub-components/newComp.git git add . git commit -m "Initial commit" git push -u origin master ``` 添加到父仓库中 ```bash cd all-components git submodule add http://192.168.51.240/components-group/sub-components/newComp.git git add . git commit -m "add submodule newComp" git push ``` ## 拉取最新代码 ```bash cd all-components git pull git submodule update --remote # 更新子仓库,指向每个子仓库的最新的commit git status # 查看状态 ``` ## 删除某个子组件仓库 ```bash git rm -rf --cached subModuleName rm -rf subModuleName vi .gitmodules # 删除对应的submodule记录 vi .git/config # 删除对应的submodule记录 git status #可以看到 .gitmodules和这个目录有改动,把这两个加入改动并commit git add . git commit -m "rm subModuleName" git push ``` ## 常见问题 ### git pull 出现错误,子模块追踪的ref不一致,应先更新子模块和远程子仓库同步,再执行git pull ![](err1.png) ### git pull 拉取代码之后,发现很多子模块的状态是modified,不是我改动过的,怎么处理? 拉取后的状态 ![](git-pull.png) 更新子模块,与远程最新commit同步 ![](update-submodule.png) 检查git状态,显示正常ok ![](clean1.png) ## 查看命令的详细参数 `git submodule -h` ![](git-submodule.png)