1. Git submodule

1.1. submodule常用命令

在项目中的.gitmodules文件中查看当前submodule设置

git clone <repository> --recursive #递归的方式克隆整个项目
git submodule add <repository> <path> #添加子模块
#示例:git submodule add git://xxxxx.git findernamegit submodule init #初始化子模块
git submodule update --init --recursive #初始化并更新子模块
git submodule foreach git pull      #拉取所有子模块
git pull --recurse-submodules  #拉取所有子模块中的依赖项
git submodule sync  #将新的URL同步更新,该步骤适用于git submodule add或修改.gitmodules文件之后
git submodule status third_party/ModuleA    #查看子模块状态,即该子模块切入的提交节点位置,即某HASH值#删除子模块,然后删除对应资源库所有文件
git rm --cached ModuleA
rm -rf moduleAgit submodule set-url third_party/ModuleA https://XXX.git #,更新子模块URL,该功能在1.8.3.1以上版本
git submodule set-branch --branch dev third_party/ModuleA   #设置子模块项目采用的分支,该功能在1.8.3.1以上版本

若希望每次clone拉取新的submodule到指定分支指定节点,需要在提交时将子模块checkout到指定指针位置,然后提交该子模块所在目录git add third_party/ModuleA;git commit xxx;(其实是提交子模块中的.git所在commit指针中位置HASH值e6fd72ad).

1.1. 删除和更新子模块

  • 删除一个submodule
    1.删除 .gitsubmodule中对应submodule的条目
    2.删除 .git/config 中对应submodule的条目
    3.执行 git rm --cached {submodule_path}。注意,路径不要加后面的“/”。例如:你的submodule保存在 supports/libs/websocket/ 目录。执行命令为:git rm --cached supports/libs/websocket

  • 更新submodule的URL
    1.更新 .gitsubmodule中对应submodule的条目URL
    2.更新 .git/config 中对应submodule的条目的URL
    3.执行 git submodule sync

2. 问题解决

2.1.引用不是一个树

fatal: 引用不是一个树:a27a43eafa8f4dd514e89984f5394260a36ea4f6
无法在子模组路径 ‘src/lib/ecl’ 中检出 ‘a27a43eafa8f4dd514e89984f5394260a36ea4f6’

#解决方法为git添加子模块的位置:
git add src/lib/ecl
#下载子模块命令为:
git submodule update --init --recursive

2.2. Needed a single revision

fatal: Needed a single revision
将出错的文件夹删除后,重新执行git submodule update命令

2.3. 未在.gitmodules中发现路径’boringssl’的子模组映射

#虽然优化,但是没有优化删除缓存中库
git rm --cached boringssl

参考文章 GIT Submodule的使用
参考文章 Git Submodule管理项目子模块

Git submodule子模块的使用相关推荐

  1. Git submodule子模块

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

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

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

  3. git submodule子模块管理

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

  4. git submodule获取子模块

    从github上获取工程,经常会出现依赖其它github上代码的情况,这时如果每一个都手动下载,实在太麻烦了.其实git给我们提供了相互引用的功能,可以在工程中直接引入其它的代码库,这样可以保证每次使 ...

  5. Git Submodule管理项目子模块

    使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能. 常用命令 git clone ...

  6. 【git】Git Submodule管理项目子模块

    文章目录 1.概述 2. 使用场景 3. 如何使用 3.1. 创建带子模块的版本库 3.2. 克隆带子模块的版本库 3.3. 修改子模块 3.4. 更新子模块 3.5. 删除子模块 4.删除子模块 5 ...

  7. git submodule add子模块的添加,--recurse-submodules递归克隆子项目

      git submodule add 可将其他仓库作为本仓库的子模块,并保持父项目和子项目相互独立.面对比较复杂的项目时,经常会用到. 语法 将URL的仓库作为本仓库的子模块.执行后,git会将UR ...

  8. git中submodule子模块的添加、使用和删除

    背景 项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率. 使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可. 本文主要讲解子模块相关的基础命令,详细 ...

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

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

最新文章

  1. 资讯丨谷歌 AutoML AI系统写的机器学习代码,完爆程序员
  2. 2011软考软件设计师:C语言代码规范问题(1
  3. 最近用到的几种前后端交互方式
  4. mysql 生明变量_MySql中的变量定义
  5. some demos
  6. 编程寓言:两位新手正讨论常用快捷键,路边乞丐直接说出答案!
  7. 2020-02-24
  8. 后台实现查找附近的人接口
  9. 手脱ASPack v2.12
  10. vue搭配vux-ui框架
  11. 【12306刷票必备!!!】12306订票助手----无所不能的谷歌浏览器chrome插件
  12. OBD数据过滤之:变速箱的里程能不能改
  13. win10的怎么调计算机亮度,Win10系统调节屏幕亮度的三种方法【图文】
  14. Postman----打开postman console控制台,查看接口测试打印log
  15. dellR730装机教程
  16. 阿里云李飞飞:中国数据库的时与势
  17. 我的世界java边境之地_我的世界:MC人迹罕至的6种“边境之地”,最后1种让人后背发凉!...
  18. OSG 中 常用的 Uniforms
  19. Shade4PointLights
  20. C语言求1到20的阶乘之和

热门文章

  1. python电影数据爬取的代码_Python3.5:爬取网站上电影数据
  2. 系统集成项目管理工程师2022年上半年下午案例分析题及答案
  3. 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
  4. 河南省考研计算机学校,河南哪个学校的研究生容易考
  5. 聊聊二十七八岁,聊二十一二岁
  6. 基于虚拟机高可用redis集群搭建
  7. Task 5: Homework(附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)
  8. 数据库查询的实现:B树与磁盘I/O算法设计
  9. CentOS 安装 Screen【在线 + 离线】
  10. 狐火 不兼容event.srcElement 解决方法