【Git学习】Git如何Clone带有Submodule的仓库?

这篇具有很好参考价值的文章主要介绍了【Git学习】Git如何Clone带有Submodule的仓库?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述

在GitHub上下载了一份源码

  • https://github.com/the3deer/android-3D-model-viewer

打开之后如下所示:

  1. app这个主module中是需要依赖子moduleengine
  2. 但是下载下来的代码engine是空的
    【Git学习】Git如何Clone带有Submodule的仓库?

二、解决问题

去这个代码的Github主页:https://github.com/the3deer/android-3D-model-viewer探索答案:

  1. 这份GitHub源代码上没有engine的代码

  2. GitHub的README.md文档中有描述
    需要添加git submodule下载代码下来

【Git学习】Git如何Clone带有Submodule的仓库?
好嘛,得使用git submodule add 来添加 engine这个子module.

下面来介绍下git submodule的知识。

三、参考链接

读者可以详情参考下面的链接,去了解git submodule的知识点。

  • Git Submodule使用完整教程
  • Git添加子模块(submodule)
  • git中submodule子模块的添加、使用和删除
  • git submodule的添加、删除和更新子目录中的分支

四、解决问题

为了演示方便,我们将项目删除,全部重新来一次。

4.1 下载主模块

  1. 复制主模块的下载链接
    【Git学习】Git如何Clone带有Submodule的仓库?

  2. 执行如下命令下载主模块

 git clone https://github.com/the3deer/android-3D-model-viewer.git

下载过程中…
【Git学习】Git如何Clone带有Submodule的仓库?
下载完毕
【Git学习】Git如何Clone带有Submodule的仓库?

可以看到下载下来的主模块,有子模块目录 engine

【Git学习】Git如何Clone带有Submodule的仓库?
但是 engine目录是个空目录。

4.2 查看主模块的配置

因为我们已经将主模块下载下来了,所以就查看下配置,如下所示:
【Git学习】Git如何Clone带有Submodule的仓库?

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = https://github.com/the3deer/android-3D-model-viewer.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main

4.2 子模块的添加

git submodule add <url> <path>

上述代码段中<url>为需要添加的子模块地址,<path>为需要将子模块添加到的目的路径。

若是将子模块添加到此目录下,则上述代码段的<path>可省略

这个示例,我们执行下面的代码

git submodule add https://github.com/the3deer/android-3D-engine.git

好嘛,执行直接失败!!!

$ git submodule add https://github.com/the3deer/android-3D-engine.git engine/
fatal: 'engine' already exists in the index

【Git学习】Git如何Clone带有Submodule的仓库?
看来是早已经添加过了,我们去查看下配置

4.3 查看子模块的配置

在项目中,有个.gitmodules的文件,如下所示:

【Git学习】Git如何Clone带有Submodule的仓库?

我们查看下内容:

$ cat .gitmodules
[submodule "engine"]
        path = engine
        url = https://github.com/the3deer/android-3D-engine.git

原来如此,.gitmodules记录了每个submodule的引用信息,知道在当前项目的位置以及仓库的所在。

【Git学习】Git如何Clone带有Submodule的仓库?

4.4 查看子模块的检出状态

$ git submodule
-525e9a5246c106f6eaab7e615c81108bd405d5d6 engine

看到submodules的状态是hash码和文件目录,但是注意前面有一个减号:-,含义是该子模块还没有检出。

OK,那么我们就检出这个主modulesubmodules

4.5 检出submodule

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

git submodule init
git submodule update

我们来实践一下
【Git学习】Git如何Clone带有Submodule的仓库?

$ git submodule init
Submodule 'engine' (https://github.com/the3deer/android-3D-engine.git) registered for path 'engine'


$ git submodule update
Cloning into 'E:/GitHubCode/android-3D-model-viewer/engine'...
Submodule path 'engine': checked out '525e9a5246c106f6eaab7e615c81108bd405d5d6'

好的,顺利的clone了子module仓库下来
【Git学习】Git如何Clone带有Submodule的仓库?

4.6 再次查看.git/config

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = https://github.com/the3deer/android-3D-model-viewer.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main
[submodule "engine"]
        active = true
        url = https://github.com/the3deer/android-3D-engine.git

【Git学习】Git如何Clone带有Submodule的仓库?

4.7 重新打开Android Studio运行代码

主模块和子模块是两个不同的仓库,但是可以一起运行了!!!
【Git学习】Git如何Clone带有Submodule的仓库?文章来源地址https://www.toymoban.com/news/detail-408575.html

到了这里,关于【Git学习】Git如何Clone带有Submodule的仓库?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git——git clone私有仓库

    在clone的时候,在https://后面先加上github-username:github-token,再@项目的链接即可把项目clone下来。 GitHub:加的是token;(Token设置:设置Token) Gitee:加的是password; example: kyrle 是我的用户名 设置密码不用反复输入 http ssh 设置ssh链接:github ssh密钥配置 如果ssh无反应则尝试:

    2024年02月11日
    浏览(51)
  • git submodule 如何同步更新

    git submodule 更新之后, 如果在父仓库里直接调用 “git submodule update --init --recursive” 会发现 子模块的代码不会更新。初学者会很迷惑,怎么能把子模块更新到最新呢?方法如下 从父仓库进入到modules目录(这个目录是submodule生成的),调用”git pull origin master“ cd modules git pu

    2024年02月11日
    浏览(76)
  • ssh 方式git clone 代码仓库

            工作中,git的使用必不可少,拉取Git仓库常用的有两种方式,一是以https方式 git clone;二是以ssh的方式。第一种方法最简单,一般拿到地址,直接git clone url即可,二、第二种方法需要配下ssh公私钥,当然也非常简单,最好两种方法都要掌握,因为很有可能其中一种不

    2024年02月11日
    浏览(43)
  • git 使用 submodule 如何指定分支

    写在前面, 作为一个前端我是不喜欢使用 submodule的, 我更喜欢 npm 包的管理方式。 首次添加子模块 git submodule add -b branch remote path 不指定分支就不传 -b branch branch 分支名 remote 仓库地址 path 子模块路径, 也就是你的文件下载路径 示例: git submodule add -b stable https://github.com/example/

    2024年03月13日
    浏览(52)
  • 【随笔】Git 基础篇 -- 远程仓库 git clone(二十五)

    💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘 您的点赞、关注、收藏、评论,是对我最大

    2024年04月15日
    浏览(39)
  • 如何使用git submodule:添加、查看、更新、修改、删除、克隆含submodule的项目

    Git submodule 功能可以让我们在一个仓库中添加另一个仓库作为当前仓库的子仓库,这样既方便了代码管理,也免去我们重复造轮子的精力和时间。注意:Git submodules 只是某个仓库某一时刻的一个状态的引用,即某个 commit 的引用。 添加远程项目默认分支 添加远程项目指定分支

    2024年02月04日
    浏览(34)
  • Git 仓库代码太大clone不下来

    Git clone UE5 源码,由于源码太大,重复几次都是失败 当 Git clone 代码到最后出现 fetch-pack: unexpected disconnect while reading sideband packet fatal: early 时,大多是因为仓库代码太大,无法一次clone下来,这时需要如下操作: 克隆最新一次提交 –depth 用来指定克隆的深度, 1表示克隆最近

    2024年02月04日
    浏览(29)
  • 使用git submodule解决高耦合度问题

    在开发我的笔记系统时,我遇到了一个问题。问题是,在api-gate服务中,我需要验证用户的access_code,但是access_code的生成逻辑是在auth2服务中实现的。这个问题从架构设计的层面上看,就是一个高耦合度问题。高耦合度会给代码的扩展代码麻烦,并给未来的系统维护带来隐患

    2024年02月02日
    浏览(29)
  • 如何使用 git submodule 删除子模块?

    删除 Git 子模块(submodule)需要进行一系列的步骤。下面是如何做的详细步骤: 从 .gitmodules 文件中删除子模块的相关条目。 请将 submodule_name 替换为您要删除的子模块的名称。 从 .git/config 文件中删除子模块的相关条目。 同样地,将 submodule_name 替换为您要删除的子模块的名称

    2024年02月10日
    浏览(44)
  • Github 仓库 git clone 速度过慢解决方法!

    很多时候想从 GitHub 上 clone 一个仓库,都会遇到速度慢的问题,而且经常连接失败,这里给出有效解决方案。 有时会遇到从GitHub上clone项目,速度仅有几十KB,而且经常链接失败,经过我亲测,给出有效的解决方法 今天遇到这个问题,网上查了许多方法,总结了一些方式。

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包