git中支持引用另外一个开源库,并且可以指定依赖的分支或者提交记录号。

比如fltk-rs 库的fltk-sys模块依赖了库 cfltk 并指明了依赖的提交是 8a56507

甚至可以嵌套,毕竟库自身也不知道自己给别人当了子。比如上面这个 cfltk 又依赖了 fltk @ 324fcfc

但是如果你单纯使用git clone {url} 去拉取代码,嵌套的库并不会被克隆下来,这样你本地编译免不了失败。

应该怎么做呢?

使用Git Submodules机制,可以将一个Git仓库作为另一个Git仓库的子目录使用。

以下是使用Git Submodules的详细步骤:

在主仓库中添加子模块

git submodule add https://github.com/user/repo

这将从给定的URL创建一个子模块,并将其添加到主仓库中。

初始化并更新子模块

git submodule update --init --recursive

这个命令将初始化子模块并拉取其内容,包括嵌套的子模块。

更新子模块到最新的代码

git submodule update --remote

递归地更新所有子模块

git submodule foreach git pull origin master

删除一个子模块

git submodule deinit -f <submodule_path>
git rm -f <submodule_path>
git commit -m "Remove submodule <name>"

github中的子模块(git submodule)的更多相关文章

  1. git submodule 子模块

    ### 背景:为什么要用子模块? 在开发项目中可能会遇到这种问题:在你的项目中使用另一个项目,也许这是一个第三方开发的库,或者是你独立开发的并在多个父项目中使用的.简单来说就是A同学开发了一个模块,被 ...

  2. git submodule 使用过程中遇到的问题

    git submodule 使用过程中遇到的问题 资源文件 原.gitmodules文件的内容如下: [submodule "Submodules/FFmpegWrapper"] ...

  3. Git 子模块:git submodule

    imtianx 2018年03月08日阅读 2057 Git 子模块:git submodule 工作中,可能会遇到在一个Git仓库 中添加 其他 Git 仓库的场景.比如,在项目中引用第三方库.或者 ...

  4. Git submodule 子模块的管理和使用

    因为代码分了两个小组管理,一部分代码使用跨平台语言实现,一部分使用原生实现. 所以使用Git submodule 来进行管理. 1,查看/更新 子模块 $ git submodule add ssh: ...

  5. 转:Git Submodule管理项目子模块

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

  6. Git Submodule管理项目子模块

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

  7. (转)如何将本地git仓库上传到GitHub中托管+实践心得

    Git——新手入门与上传项目到远程仓库GitHub(转) - Chen_s - 博客园http://www.cnblogs.com/Chenshuai7/p/5486278.html 注意的问题: 1 ...

  8. git submodule 管理子项目

    使用场景 拆分项目,当项目越来越大之后,我们希望 子模块 可以单独管理,并由 专门 的人去维护,这个时候只可以使用 git submodule 去完成. 常用命令 git clone <repo ...

  9. 使用Jenkins + git submodule 实现自动化编译,解决代码安全性问题

    道哥的第 030 篇原创 目录 一.一个真实的代码泄漏故事 二.Jenkins 的基本使用 1. Jenkins 是什么? 2. 安装 JDK8 3. 安装 Jenkins 4. 在浏览器中配置 Je ...

  10. github克隆项目中的子模块submodule时遇到的问题

    GitHub真是个开源大宝库,不只能学习代码,还能学习git的使用! 最近在研究Off-the-Record-iOS项目(https://github.com/chrisballinger/Off-t ...

随机推荐

  1. three.js教程1-快速入门

    1.项目开发环境引入threeJs 如果采用的是Vue + threejs或React + threejs技术栈,threejs就是一个js库,直接通过npm命令行安装就行. npm安装特定版本thr ...

  2. 2023年的Clion内建立多个子项目(保姆级教程)

    目录 下载插件C/C++ Single File Execution 项目操作 其他操作 下载插件C/C++ Single File Execution 项目操作 1.新建项目-->如图所示操作 ...

  3. kubernets之init容器作用

    一  init容器的作用 1.1  init容器是在pod的生命周期,保证该pod运行的一些前置条件满足之后才开始运行这个pod,例如需要依赖一些其他的pod,服务等,可以去对这些服务的状态进行检测, ...

  4. SASS 插值语句 #{ }的使用

    在之前我们已经使用用 / 来进行计算,但如下情况不一样 例如 p{ font: 16px/30px Arial, Helvetica, sans-serif; } 如果需要使用变量,同时又要确保 / ...

  5. 微信小程序报错“Component “页面路径“ does not have a method “ 方法名“ to handle event tap的

    我遇到这个问题的原因是,data属性把methods包括在里面了,把methods当成了一个字段,所以就相当于没写methods属性,里面的方法就识别不了了.解决办法就是把data的后括号打在meth ...

  6. go append的坑

    b := []int{1,2,3,4,5} slice := b[:2] newSlice := append(slice, 50) fmt.Println(b) fmt.Println(newSli ...

  7. kubernetes命令补全k8s命令补全

    echo "source <(kubectl completion bash)" >> ~/.bashrc source <(kubectl complet ...

  8. nginx启动流程

    nginx启动流程 1. 根据命令行决定配置文件路径 2. 如果处于升级中则监听环境变量里传递的监听句柄 3. 调用所有核心模块的create_conf方法生成存放配置项的结构体 4. 针对所有核心模 ...

  9. itestwork(爱测试)开源一站式接口测试&敏捷测试工作站 9.0.0 GA 发布,重大升级

    (一)itest 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷.itest work 包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1 ...

  10. js 判断闰年

    首先,我们需要了解闰年的判断方式 1.能被4整除 2.并且不能被100整除 3.或者被400整除的 其次我们再来回顾下函数封装的知识,所谓的函数封装就是将一段函数封装成一个工具,有人用到了拿过来就可以 ...