递归克隆git仓库不会拉动子模块

我想克隆一个git repo [1],它有一个在.gitmodules定义的子模块:

[submodule "PointInCircle"]
        path = PointInCircle
        url = https://github.com/midas-journal/midas-journal-843

在这些问题[2-4]之后,我尝试了:

$ git clone --recursive https://github.com/midas-journal/midas-journal-851

如果我理解了正确的submodule ,我显然没有这样做,那么在midas-journal-851应该有一个名为PointInCircle ,并将第二个repo克隆到它中。 但是,没有创建PointInCircle目录,并且据我所知,代码不会被克隆到任何地方。 为了好的措施,我也试过......

$ git submodule init
$ git submodule update

...以及...

$ git submodule update --init --recursive

...和...

$ git submodule foreach --recursive git submodule update --init

...在克隆目录中。 每个命令运行时都不会向控制台输出任何内容,并且在目录中看不到任何更改。

任何想法我做错了什么?

[1] https://github.com/midas-journal/midas-journal-851
[2]克隆与所有子模块的git回购
[3]如何包含子模块的`git clone`?
[4]'git submodule update --init --recursive'VS'git submodule foreach --recursive git submodule update --init'


任何想法我做错了什么?

你没有做错什么。 该存储库的子模块仅部分配置。

子模块由两件事物定义:

子模块由主存储库中所谓的gitlink树条目组成,该条目引用内部存储库中完全独立的特定提交对象。 位于源树根部的.gitmodules ...文件中的记录为子模块分配了一个逻辑名称,并描述了子模块应从中克隆的默认URL。

该存储库包含一个.gitmodules文件,但不包含gitlink对象。

GitHub会显示具有灰色文件夹图标的正确子模块,该图标在此存储库中不存在:

由于错误的.gitmodules文件只包含一个条目,在我的情况下,我建议

  • 删除.gitmodules文件,

    git rm .gitmodules
    
  • 正确添加子模块,

    git submodule add https://github.com/midas-journal/midas-journal-843 PointInCircle
    
  • 并承诺。

    git commit -m "Fix PointInCircle submodule"
    
  • git commit的输出应该显示PointInCircle被添加模式160000 (表示gitlink ),并且现在应该正确配置您的存储库。 使用git submodule status来确保:

    $ git submodule status
    9bc2651367f8cc5f47ac5f6c708db2f9a71d8fd8 PointInCircle (heads/master)
    

    你可能想用你的修补程序打开对父库的pull请求,但由于它只包含三年前的一次提交,所以我怀疑它已被放弃。

    链接地址: http://www.djcxy.com/p/92415.html

    上一篇: Recursively cloning a git repo doesn't pull submodules

    下一篇: Google Drive API