美文网首页OC-开发案例收集
Git submodule 管理项目的子模块

Git submodule 管理项目的子模块

作者: coming_168 | 来源:发表于2019-08-27 20:21 被阅读0次

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

  • 使用场景:某个工作中的项目需要包含并使用另一个项目;

  • 说白了就是把两个独立的项目,在其中一个项目中使用另一个项目。

  • Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

一、子模块的导入方法:

// 将项目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⃣️种是先克隆父项目,再更新子模块;
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 

相关文章

  • 日常小问题

    git 子模块git submodule init && git submodule update ubuntu下...

  • git 命令

    添加项目的依赖模块git submodule update --init 克隆仓库的master分支git clo...

  • git 子模块的使用

    git submodule study 添加子模块 git submodule add http://ip:300...

  • git命令更新子模块

    1.cd进入子模块 2.git submodule init 3.git submodule update

  • Git submodule 管理项目的子模块

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

  • 使用Git Submodule管理子模块

    参考链接使用Git Submodule管理子模块 clone Submodule有两种方式 一种是采用递归的方式c...

  • Git submodules

    Git子模块 背景信息 子模块(submodule)是Git为管理仓库共用而衍生出的一个工具,通过子模块您可以将公...

  • git submodule 管理子工程

    git submodule 管理子工程 摘要:当多人共同维护一个项目时,必然需要进行模块化开发,所以使用submo...

  • git submodule

    git 子模块 常用命令:初始化子模块 git submodule init 增加子模块 git submodul...

  • git子模块操作

    子模块使用1.添加子模块git submodule add path(git地址) localPath(本地路...

网友评论

    本文标题:Git submodule 管理项目的子模块

    本文链接:https://www.haomeiwen.com/subject/fbdyectx.html