背景

项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率。

使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。

本文主要讲解子模块相关的基础命令,详细使用请参考man page。

子模块的添加

添加子模块非常简单,命令如下:

git submodule add <url> <path>

其中,url为子模块的路径,path为该子模块存储的目录路径。

执行成功后,git status会看到项目中修改了.gitmodules,并增加了一个新文件(为刚刚添加的路径)

git diff --cached查看修改内容可以看到增加了子模块,并且新文件下为子模块的提交hash摘要

git commit提交即完成子模块的添加

子模块的使用

克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行如下命令完成子模块的下载:

git submodule init
git submodule update

git submodule update --init --recursive

执行后,子模块目录下就有了源码,再执行相应的makefile即可。

子模块的更新

子模块的维护者提交了更新后,使用子模块的项目必须手动更新才能包含最新的提交。

在项目中,进入到子模块目录下,执行 git pull更新,查看git log查看相应提交。

完成后返回到项目目录,可以看到子模块有待提交的更新,使用git add,提交即可。

删除子模块

有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。

删除子模块较复杂,步骤如下:

rm -rf 子模块目录 删除子模块目录及源码
vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
vi .git/config 删除配置项中子模块相关条目
rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可
执行完成后,再执行添加子模块命令即可,如果仍然报错,执行如下:

git rm --cached 子模块名称

完成删除后,提交到仓库即可。
————————————————
版权声明:本文为CSDN博主「guotianqing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guotianqing/article/details/82391665

git中submodule子模块的添加、使用和删除相关推荐

  1. Git中submodule的使用

    背景 面对比较复杂的项目,我们有可能会将代码根据功能拆解成不同的子模块.主项目对子模块有依赖关系,却又并不关心子模块的内部开发流程细节. 这种情况下,通常不会把所有源码都放在同一个 Git 仓库中. ...

  2. 使用qtcreator中的git_Git中submodule的使用

    背景 面对比较复杂的项目,我们有可能会将代码根据功能拆解成不同的子模块.主项目对子模块有依赖关系,却又并不关心子模块的内部开发流程细节. 这种情况下,通常不会把所有源码都放在同一个 Git 仓库中. ...

  3. git子仓库管理使用(添加子仓库,删除子仓库,更新子仓库)

    背景 项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率. 使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可. 例如一个使用了子仓库的代码库,如何获取 ...

  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 submodule子模块的使用

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

  8. 克隆git文件_如何在Git中克隆,修改,添加和删除文件

    克隆git文件 在本系列有关Git入门的第一篇文章中 ,我们创建了一个简单的Git存储库,并通过将其连接到计算机将文件添加到其中. 在本文中,我们将学习有关Git的其他一些知识,即如何在Git存储库中 ...

  9. idea中,发布项目到Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected“

    idea中,发布项目到Git中,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected". 大概原因是:初始化项目时,远程仓库 ...

最新文章

  1. 这个新方法,竟然能检测 Python 代码的好坏!
  2. 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉
  3. vue3中ref、reactive、shallowRef、 shallowReactive、toRaw、unref、toRef、toRefs、customRef使用与区别
  4. Java常见面试题汇总
  5. 从单体到Flink:一文读懂数据架构的演变
  6. 服务器物理链路,【交换机在江湖对接案例】配置堆叠系统对接NLB服务器群集示例(通过物理链路环回方法)...
  7. 计算机音乐lover88,Lover Boy 88-Higher Brothers/Phum Viphurit
  8. 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟
  9. [转载] 把数据对象转成字符串_python入门基础培训教程,Python 字符串学习
  10. Vulkan 学习笔记 day01 vulkan visuall studio配置测试
  11. php的get和post,PHP中GET和POST区别
  12. 985硕士程序员年薪80万!邻居眼中不如一个老师?你怎么看?
  13. html swf转mp4,swf怎么转换成mp4 swf视频转换成mp4格式没有声音|转换成MP4格式没有画面...
  14. 少林禅医:姜是无上养生物,谨慎使用大智慧
  15. 特长生模拟——买装备
  16. HBO解密:他们为什么要开发VR版《西部世界》
  17. wamp5如何配置多个自定义域名访问本地不同的项目
  18. 【MySQL】创建数据表
  19. 现代诗与古典传统的关系
  20. [Android]listview图文混排

热门文章

  1. 免费开源的云尚发卡V1.5.7
  2. 英语四级常考100个短语
  3. 未来电竞旗舰:iQOO 8系列售价3799元起
  4. npm install 报错:found XXX vulnerabilities (XXX low, X moderate),run `npm audit fix` to fix them, or `
  5. 机器学习入门 --- 贝叶斯 - 中文新闻分类任务
  6. GitHub 上排名前 100 的 Android 开源库介绍
  7. 赤霉素3β-羟化酶的下调增强了大豆的光合作用并提高了种子产量
  8. Ubuntu操作系统安装中文输入法
  9. 一致性哈希算法原理详解
  10. 设计模式 访问者模式