当前位置: 首页 > news >正文

git创建子模块

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

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


添加子模块

添加一个远程仓库项目 https://github.com/chaconinc/DbConnector 子模块到一个已有主仓库项目中。命令如下:

git submodule add 命令后面加上想要跟踪的项目的相对或绝对 URL 来添加新的子模块。

//可将该子模块添加到file文件夹中(可选)

//这时,你会看到一个名为 file 的文件夹在你的主仓库目录中

git submodule add https://github.com/chaconinc/DbConnector file

在主仓库添加完子模块后,需要保存提交上传。

git add .

git commit -m "添加子模块"

git push origin branchName

更新子模块

当子模块中有更新时,需要手动更新拉取到最新信息

// 更新项目内子模块到最新版本

git submodule update

// 更新子模块为远程项目的最新版本

git submodule update --remote

删除子模块

删除子模块比较麻烦,需要手动删除相关的文件,否则在添加子模块时有可能出现错误 ,以删除 file 子模块仓库文件夹为例

// 删除子模块文件夹

$ git rm --cached GWToolkit
$ rm -rf GWToolkit

//删除.gitmodules文件中相关子模块的信息,类似于:

[submodule "GWToolkit"]path = GWToolkiturl = https://github.com/iphysresearch/GWToolkit.git

//删除 .git/config 中相关子模块信息,类似于:

[submodule "GWToolkit"]url = https://github.com/iphysresearch/GWToolkit.gitactive = true

//删除 .git 文件夹中的相关子模块文件

$ rm -rf .git/modules/GWToolkit

Clone 包含子模块的项目

对于你的主仓库项目合作者来说,如果只是 git clone 去下载主仓库的内容,那么你会发现子模块仓库的文件夹内是空的!

此时,你可以像上面「添加子模块」中说到的使用 

git submodule update --init --recursive 

来递归的初始化并下载子模块仓库的内容。

也可以分初始化和更新子模块两步走的方式来下载子模块仓库的内容:

$ git submodule init        # 初始化子模块
$ git submodule update    # 更新子模块

但是,如果你是第一次使用 git clone 下载主仓库的所有项目内容的话,我建议你可以使用如下的代码格式来把主仓库和其中子模块的所有内容,都一步到位的下载下来:

$ git clone --recursive <project url>

以后可以在子模块仓库目录下使用 git pull origin main 或者 git push 等来进行更新与合并等操作。

http://www.lryc.cn/news/377051.html

相关文章:

  • 把Deepin塞进U盘,即插即用!Deepin To Go来袭
  • ​​给【AI硬件】创业者的论文、开源项目和产品整理
  • 模拟面试题卷二
  • 22种常用设计模式示例代码
  • Java面试题:对比ArrayList和LinkedList的内部实现,以及它们在不同场景下的适用性
  • ping: www.baidu.com: 未知的名称或服务(IP号不匹配)
  • 谷神前端组件增强:子列表
  • 测试cudaStream队列的深度
  • ​海康威视 isecure center 综合安防管理平台任意文件上传漏洞
  • shadertoy-安装和使用
  • matlab线性多部法求常微分方程数值解
  • 前端页面实现【矩阵表格与列表】
  • GPT4v和Gemini-Pro调用对比
  • 破布叶(Microcos paniculata)单倍型染色体级别基因组-文献精读22
  • 浅谈RC4
  • uniapp微信小程序开发物料
  • 大数据工程师如何做到数据可视化?
  • Java 序列化与反序列化
  • 自定义防抖注解
  • 【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)
  • 【html】用html+css做地表最强王者荣耀辅助工具
  • TF-IDF、BM25传统算法总结
  • 项目五 OpenStack镜像管理与制作
  • LabVIEW回热系统热经济性分析及故障诊断
  • 设计模式-迭代器模式
  • UV胶带和UV胶水的应用场景有哪些不同吗?
  • 监控员工上网软件有哪些|4款好用的员工上网行为管理软件推荐
  • 【IPython的使用技巧】
  • 最新AI智能聊天对话问答系统源码(详细图文搭建部署教程)+AI绘画系统(Midjourney),DALL-E3文生图,TTS语音识别输入,文档分析
  • 项目四 OpenStack身份管理