文章目录

  • 子模块的作用
  • 添加子模块
  • 拉取带子模块的项目
  • 修改子模块代码

子模块的作用

通常情况下,我们做项目时会有几个业务功能区分比较明确的模块,比如简单来说,一个项目我们可以分为认证授权模块、工具类模块、常规业务模块。
        而像认证授权模块、工具类模块这些公用模块会有很多项目去使用,所以这些模块不能放在某一个项目里面,而应该是一个单独的仓库,这个时候就可以使用 git submoudule 去引用和管理公用模块。
        引用子模块的定义就是,git 子模块允许你将一个 git 仓库作为另一个 git 仓库的子目录。能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。子模块适用于主项目对子模块有依赖关系,却又并不关心子模块的内部开发的流程和细节;适用于整体复用的情况;

添加子模块

首先拉取主项目到本地

git clone -b origin/master http://xxx.xx.xx.xxx/cnaec/server.git
cd server
git pull

然后添加子模块,并推送到远程仓库
这里我添加了两个模块

git submodule add http://xxx.xx.xx.xxx/base-moudule/auth-moudule2.git
git submodule add http://xxx.xx.xx.xxx/base-moudule/utils-moudule.git
git add.
git commit -m "add submodules"
git push

添加完之后,项目里面会生成一个 .gitmodules 文件,里面是子模块的地址配置,有这个就表示子模块添加成功了。

更新子模块代码
刚添加完的子模块是一个空文件夹,里面没有内容,我们需要更新一下子模块项目

git submodule init
git submodule update

拉取带子模块的项目

第一种方法:

git clone http://xxx.xx.xx.xxx/cnaec/server.git --recurse-submodules

第二种方法:

git clone http://xxx.xx.xx.xxx/cnaec/server.git
cd server
git submodule init
git submodule update

修改子模块代码

当我们拉取了主项目和子模块并修改子模块内容,提交子模块的时候主项目会生成一个新的指针字符串,指向当前子模块的提交记录。
切记,子模块做了修改之后,这个文件提交的时候一定不要漏了。每一个子模块都有一个对应的这样的文件

我们看一下现在的仓库信息 auth-moudule 显示版本是 65638680

点进这个版本,我们可以看到对应的提交记录是我们最新提交的一次记录

如果不提交指针文件的话,其他人在拉取项目的时候就拉取不到我们提交的子模块的最新代码。

Git -- submoudule子模块使用相关推荐

  1. Git 工具 - 子模块 外部引用

    from:https://git-scm.com/book/zh/v1/Git-工具-子模块 Git 工具 - 子模块 子模块 经常有这样的事情,当你在一个项目上工作时,你需要在其中使用另外一个项目. ...

  2. Git工具 - 子模块

    #1.子模块使用场景 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想 ...

  3. Git submodule子模块的使用

    1. Git submodule 1.1. submodule常用命令 在项目中的.gitmodules文件中查看当前submodule设置 git clone <repository> ...

  4. Git submodule子模块

    1. 子模块的添加 git submodule add <url> <path> 其中,url为子模块的路径,path为该子模块存储的目录路径. 比如: git submodu ...

  5. git submodule 子模块的管理和使用

    子模块前面有一个-,说明子模块文件还未检入(空文件夹). 初始化子模块 $ git submodule init Submodule 'assets' (https://github.com/maon ...

  6. git submodule子模块管理

    有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个 ...

  7. git下载子模块命令git clone --recursive和git submodule update --init

    目录 方法一:git clone --recursive 方法二:git submodule update --init 有时github上的工程可能会包含一些子模块,例如 这时候如果你只是用下面的命 ...

  8. Git 合并子模块改动没有出现 ‘merge following commits not found’

    出现的问题 在<Pro Git>的第7章11节-- 合并子模块改动 中,输入git pull 命令,并没有出现如下书中的结果 $ git pull remote: Counting obj ...

  9. vue配置git的子模块

    在vue的模块需要调用许多公共组件,在公共组件之后会需要不断的更新以及分组做,这时候可以利用git的方式更新组件所在位置 [submodule "src/component/common&q ...

最新文章

  1. linkedHashMap源码解析(JDK1.8)
  2. vue3源码中的最长递增子序列
  3. 【图像处理】——图像内插法
  4. 和不安全的Android说再见,Google为它添加新铠甲
  5. 还不理解“分布式事务”?这篇给你讲清楚!
  6. BZOJ3376: [Usaco2004 Open]Cube Stacking 方块游戏
  7. 一句话木马:ASPX篇
  8. python简明教程电子书下载_python简明教程中文pdf下载-Python入门级电子书完整免费版-东坡下载...
  9. jsp购物车和mysql_jsp购物车的代码和数据库
  10. 10月2场CMDN Club活动专题、视频、资源分享
  11. 人事考勤系统服务器端,考勤管理,考勤管理系统,人事考勤管理系统,考勤系统 - 新开普(NewCapec)...
  12. 基于java实现的一个电话号码程序,3位,5位,7位,8位,11位
  13. 数据保存(永久保存)方式
  14. WIN2008R2修改远程桌面端口(不重启系统)
  15. 7.java IO流
  16. BH1750_数字16位串行输出型环境光传感器
  17. Brenda-利用SOAP API访问Brenda及本地保存
  18. 如何做番茄炖牛腩——hadoop理解
  19. ubuntu14.04编译ijkplayer备忘
  20. Android开发 - 线程和服务

热门文章

  1. Java基础学习(二十一)之接口
  2. 174道 JavaScript 面试题,助你查漏补缺
  3. 唯品会亿级数据服务平台实践
  4. 你还在担心黑客攻击吗?所有程序员都应该掌握的基础网络安全知识,快进来看看吧
  5. 采集到博客数据的10个经典方法
  6. 请问怎么设置默认浏览器
  7. 那年冬天风在吹宋慧乔win7主题
  8. 面试-Senior Specialist for Devops-车企
  9. ODBC方式与OCI方式对比
  10. java 学习 汇总