OC-开发案例收集

Git submodule 管理项目的子模块

2019-08-27  本文已影响0人  coming_168

当项目变得越来越大,就会想到分成多个子模块,我们希望各个子模块都是独立的项目进行版本管理和维护,这时候我们就会用到git的submodule功能。

一、子模块的导入方法:

// 将项目B添加到项目A中
1. 用命令切换到A项目的根目录 
2. 添加子项目B到项目A的文件夹C中
$ git submodule add https://github.com/ccc/Demo C
3. 添加子模块后运行git status, 可以看到目录有增加1个文件.gitmodules
$ git status
4. 查看子模块
$ git submodule
5. 更新子模块:
   更新项目内子模块到最新版本:
   $ git submodule update
   更新子模块为远程项目的最新版本:
   $ git submodule update --remote

二、修改子模块的功能

$ git add .
$ git ci -m "commit"
$ git push origin HEAD:master

三、修改子模块的路径

// 命令行修改
1. 修改'.gitmodules'文件中对应模块的”url“属性
$ open .gitmodules
2. 打开.git/config
$ open .git/config
3. 使用git submodule sync命令,将新的URL更新到文件.git/config
$ git submodule sync
4. 提交变更
$ git commit -am "Update submodule url."

// 如果没有修改成功就手动修改
1. 先修改完".gitmodule"文件:打开.gitmodules进行修改项目路径
$ open .gitmodules 
2. 再手动修改.git/config:打开.git/config进行修改项目路径
$ open .git/config

四、删除子模块

// 方法一:
# 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空
git submodule deinit {MOD_NAME} 
# 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存)
git rm --cached {MOD_NAME} 
# 提交更改到代码库,可观察到'.gitmodules'内容发生变更
git commit -am "Remove a submodule." 

// 方法二: 以删除C文件夹为例
删除子模块文件夹
$ git rm --cached C
$ rm -rf C
删除.git文件夹中的相关子模块文件
$ rm -rf .git/modules/C

打开.gitmodules文件
$ open .gitmodules
删除.gitmodules文件中相关子模块信息

打开.git/config文件
$ open .git/config
删除.git/config中的相关子模块信息

五、克隆包含子模块的项目

1. 克隆父项目project_A到文件夹C
$ git clone https://github.com/ccc/project_A.git C
2. 查看子模块
$ git submodule
 输出:-a21bc3af61ba413028a9f6ac41633614102a2f14 C (heads/master)
// 子模块前面有一个减号 -,说明子模块文件还未检入(空文件夹)
此时需要初始化子模块
$ git submodule init
3. 更新子模块
$ git submodule update

2⃣️直接递归克隆整个项目

git clone hhttps://github.com/ccc/project_A.git C --recursive 
上一篇 下一篇

猜你喜欢

热点阅读