我正在尝试将子模块放入存储库中。 问题是当我克隆父仓库时,子模块文件夹完全为空。

有什么方法可以使git clone parent_repo实际上将数据放入子模块文件夹中吗?

例如, http : nodejs-mysql-native指向外部git子模块,但是当我检出sequelize项目时,该文件夹为空。


#1楼

尝试这个:

git clone --recurse-submodules

假设您已经将子模块添加到父项目中,它将自动提取子模块数据。


#2楼

迟来的答案

// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR

正如我整整整整花了一个小时摆弄一个朋友:即使您对BitBucket拥有管理员权限,也请始终克隆ORIGINAL存储库,并使用拥有该存储库的密码。 烦人的发现您遇到了这个陷阱:P


#3楼

子模块并行获取旨在通过一次启用多个存储库来减少获取存储库及其所有相关子模块所需的时间。 这可以通过使用新的--jobs选项来完成,例如:

git fetch --recurse-submodules --jobs=4

根据Git团队的说法,这可以大大加快更新包含许多子模块的存储库的速度。 在不使用新的--jobs选项的情况下使用--recurse-submodules时,Git将一一读取子模块。

资料来源: http : //www.infoq.com/news/2016/03/git28-released


#4楼

在填充子模块之前,您必须做两件事:

git submodule init
git submodule update

#5楼

Git 2.23(Q3 2019):如果要克隆子模块并将其更新为最新版本,请执行以下操作:

git clone --recurse-submodules --remote-submodules

如果仅要将它们克隆到其记录的SHA1:

git clone --recurse-submodules

见下文。


原始答案2010

正如joschi在评论中提到的那样, git submodule现在支持--recursive选项(Git1.6.5及更高版本)。

如果指定了--recursive ,则此命令将递归到已注册的子模块中,并更新其中的任何嵌套子模块。

有关init部分,请参见递归使用git子模块 。
有关更多信息,请参见git submodule

在git 1.6.5及更高版本中,您可以通过使用–-recursive选项克隆超级项目来自动执行此操作:

git clone --recursive git://github.com/mysociety/whatdotheyknow.git

使用git 2.8更新2016:请参阅“ 如何使用git clone --recursive加快/并行化git子模块的下载? ”

您可以并行使用多个线程来启动获取子模块。
为实例:

git fetch --recurse-submodules -j2

更好的是,使用Git 2.23(2019年第三季度),您可以在一个命令中将子模块克隆并签出到其跟踪分支!

参见Ben Avison(``) 提交4c69101 (2019年5月19日) 。
(由Junio C gitster - gitster在commit 9476094中合并 ,2019年6月17日)

clone :添加--remote-submodules标志

当使用git clone --recurse-submodules ,对于您希望子模块在其远程跟踪分支而不是通过它们检出的任何用例,以前无法将--remote开关传递给隐式git submodule update命令。记录在超级项目中的SHA-1。

此补丁纠正了这种情况。
实际上,它也会通过--no-fetch传递到git submodule update ,因为它们只是刚刚克隆了子模块,因此再次从远程获取仅会减慢速度。

这意味着:

--[no-]remote-submodules:

克隆的所有子模块将使用子模块的远程跟踪分支的状态来更新子模块,而不是超级项目的已记录SHA-1。 等效于将--remote传递给git submodule update


#6楼

在Git 2.13及更高版本中,可以使用--recurse-submodules代替--recursive

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

编者注: -j8是可选的性能优化,已在2.8版中提供,并且可以一次并行获取多达8 -j8模块-请参阅man git-clone

从1.9版的Git升级到2.12版( -j标志仅在2.8+版中可用):

git clone --recursive -j8 git://github.com/foo/bar.git
cd bar

在Git 1.6.5和更高版本中,您可以使用:

git clone --recursive git://github.com/foo/bar.git
cd bar

对于已经克隆的仓库或较旧的Git版本,请使用:

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive

#7楼

[快速回答]

您可以使用以下命令克隆所有子模块的仓库:

git clone --recursive YOUR-GIT-REPO-URL

或者,如果您已经克隆了项目,则可以使用:

git submodule init
git submodule update

#8楼

尝试将此操作包含在git存储库中。

git clone -b <branch_name> --recursive <remote> <directory>

要么

git clone --recurse-submodules

#9楼

尝试这个。

git clone -b <branch_name> --recursive <remote> <directory>

如果已将子模块添加到分支中,请确保将其添加到clone命令。


#10楼

我认为您可以执行3个步骤:

git clone
git submodule init
git submodule update

#11楼

克隆存储库时,可以使用--recursive标志。 此参数强制git克隆存储库中所有已定义的子模块。

git clone --recursive git@repo.org:your_repo.git

克隆后,有时可能会更改子模块分支,因此请在其后运行以下命令:

git submodule foreach "git checkout master"

#12楼

[快速回答]

克隆父仓库(包含一些子模块仓库)后,请执行以下操作:

git submodule update --init --recursive

#13楼

如果这是一个新项目,只需执行以下操作:

$ git clone --recurse-submodules https://github.com/chaconinc/YourProjectName

如果已安装,则:

$ cd YourProjectName (for the cases you are not at right directory)
$ git submodule init
$ git submodule update

#14楼

我对GitHub存储库有同样的问题。 我的帐户缺少SSH密钥。 这个过程是

  1. 生成SSH密钥
  2. 向您的GitHub帐户添加新的SSH密钥

然后,您可以使用子模块克隆存储库( git clone --recursive YOUR-GIT-REPO-URL

要么

运行git submodule initgit submodule update来获取已经克隆的存储库中的子模块。


#15楼

如果您的子模块已添加到分支中,请确保将其包含在克隆命令中...

git clone -b <branch_name> --recursive <remote> <directory>

如何“ git clone”包括子模块?相关推荐

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

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

  2. Git Clone命令直接使用用户名密码Clone

    git-clone 将存储库克隆到新目录 代码格式如下: git clone https://userName:password@链接 示例: git clone -b develop --singl ...

  3. git init和git clone获取仓库 (一)

    文章目录 使用git init和git clone获取git仓库 1 git init 在本地目录上创建Git仓库 2 git clone 从已有的Git存储数据库中克隆仓库到本地目录 3 导航页 使 ...

  4. 三维渲染mitsuba2安装 | git clone下载过慢问题 | 使用镜像源快速安装submodule

    Mitsuba2:https://mitsuba2.readthedocs.io/                    https://github.com/mitsuba-renderer/mit ...

  5. git submodule获取子模块

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

  6. 【Git】Git 基础命令 ( Git 版本库概念 | 创建版本库 git init | 克隆版本库 git clone )

    文章目录 一.Git 版本库概念 二.创建版本库 git init 三.克隆版本库 git clone 一.Git 版本库概念 Git 版本库概念 : Git 版本库 Repository 又称为 G ...

  7. git clone 一些简单笔记

    自使用了git后,就彻底喜欢上了,深深体会到了自由的感觉,记录一些简单的笔记和使用心得,仅供留迹,以备后查... git clone 命令参数: usage: git clone [options] ...

  8. vim傻瓜式配置 + git clone的速度慢到难以忍受问题的解决方法~

    一般在github上面看到一个好的开源项目,想要使用它,或者想要研究一下它的源码,这时我们需要使用git clone命令. git clone就是仓库克隆,把服务端的仓库克隆到本地,和git push ...

  9. git clone --recursive慢_Git使用之submodule

    入职第一周,就因为clone项目而产生了很大的障碍,花了差不多三四个小时才定位问题并解决,记录一下. 一.问题 当我们在使用Git克隆项目的时候,无法克隆下来一个文件夹.记该文件夹为A,A在远程仓库是 ...

最新文章

  1. java 小对话框_创建Java对话框
  2. java 下一代,什么是&QUOT;下一代插件&QUOT;对Java
  3. Java多线程,锁(synchronize),饿汉式单例线程,等待处理机制
  4. Repeater内部排序
  5. Dropbox推荐使用
  6. 计算机科学为什么重要,数学 – 为什么在计算机科学中有8和256个如此重要的数字?...
  7. 2022级sdut知到/智慧树---c语言第一章测试题解
  8. 搭建安卓开发环境 GIT配色 terminator SecureCRT source insight Notepad++安装
  9. Mac 微信防撤回免认证登录多开插件:Tweak
  10. 游戏测试(面试可用)
  11. 利用Matlab绘制梯度图、散度图、旋度图
  12. 【ABMDRNet2021】 Adaptive-weighted Bi-directional Modality Difference Reduction Network for RGB-T Sema
  13. 上海双非改考408,与上海计算所联合培养!上海第二工业大学计算机专硕!
  14. Android设置沉浸式
  15. Android手机为何不再卡顿?性能优化才是安卓起飞关键
  16. 【如何使用高级语言在机器语言层面提高程序运行效率】
  17. 国二python是什么意思_国二都考什么啊
  18. 检测电路故障c语言,常见的几种电路故障
  19. 在线代码编辑器:Codeanywhere介绍
  20. Flutter教程之 02 Flutter 桌面程序开发入门教程运行hello world (教程含源码)

热门文章

  1. Java Web的分页工具类
  2. Android斗地主源码实现
  3. 牛客多校第五场 A digits 2 签到
  4. 单机部署RabbltMQ环境的操作记录
  5. XSS学习笔记(一)
  6. Python调用API接口的几种方式
  7. 生成模型和判别模型直接的区别
  8. mysql快速启动bat
  9. 【常识】2016-10-26
  10. Flash/Flex学习笔记(34):AS3中的自定义事件