递归克隆 git repo 不会拉取子模块
Recursively cloning a git repo doesn't pull submodules
我想克隆一个 git 存储库 [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
s 是正确的,而我显然没有理解,那么 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] Cloning a git repo with all submodules
[3] How to `git clone` including submodules?
[4] 'git submodule update --init --recursive' VS 'git submodule foreach --recursive git submodule update --init'
Any ideas what I'm doing wrong?
你没有做错任何事。该存储库的子模块仅部分配置。
Submodules are defined by two things:
Submodules are composed from a so-called gitlink
tree entry in the main repository that refers to a particular commit object within the inner repository that is completely separate. A record in the .gitmodules
... file at the root of the source tree assigns a logical name to the submodule and describes the default URL the submodule shall be cloned from.
此存储库包含一个 .gitmodules
文件,但没有 gitlink
个对象。
GitHub displays proper submodules with a grey folder icon,此存储库中不存在:
由于错误的 .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)
您可能想用您的修复打开一个到父存储库的拉取请求,但由于它只包含三年前的一次提交,我怀疑它已被放弃。
我想克隆一个 git 存储库 [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
s 是正确的,而我显然没有理解,那么 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] Cloning a git repo with all submodules
[3] How to `git clone` including submodules?
[4] 'git submodule update --init --recursive' VS 'git submodule foreach --recursive git submodule update --init'
Any ideas what I'm doing wrong?
你没有做错任何事。该存储库的子模块仅部分配置。
Submodules are defined by two things:
Submodules are composed from a so-called
gitlink
tree entry in the main repository that refers to a particular commit object within the inner repository that is completely separate. A record in the.gitmodules
... file at the root of the source tree assigns a logical name to the submodule and describes the default URL the submodule shall be cloned from.
此存储库包含一个 .gitmodules
文件,但没有 gitlink
个对象。
GitHub displays proper submodules with a grey folder icon,此存储库中不存在:
由于错误的 .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)
您可能想用您的修复打开一个到父存储库的拉取请求,但由于它只包含三年前的一次提交,我怀疑它已被放弃。