sud*_*all 5 git git-submodules
我想克隆一个 git 存储库 [1],其中定义了一个子模块.gitmodules:
[submodule "PointInCircle"]
path = PointInCircle
url = https://github.com/midas-journal/midas-journal-843
Run Code Online (Sandbox Code Playgroud)
遵循这些问题[2-4],我尝试了:
$ git clone --recursive https://github.com/midas-journal/midas-journal-851
Run Code Online (Sandbox Code Playgroud)
如果我理解submodule正确(显然我没有理解),那么内部应该有一个midas-journal-851名为的目录PointInCircle,其中克隆了第二个存储库。但是,没有PointInCircle创建任何目录,并且据我所知,代码没有克隆到任何地方。为了更好地衡量,我也尝试过......
$ git submodule init
$ git submodule update
Run Code Online (Sandbox Code Playgroud)
...也...
$ git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
...和...
$ git submodule foreach --recursive git submodule update --init
Run Code Online (Sandbox Code Playgroud)
...在克隆的目录中。每个命令运行时都不向控制台打印任何内容,并且我在目录中没有看到任何更改。
有什么想法我做错了吗?
[1] https://github.com/midas-journal/midas-journal-851
[2]克隆包含所有子模块的 git 存储库
[3]如何“git clone”包括子模块?
[4] 'git 子模块更新 --init --recursive' VS 'git 子模块 foreach --recursive git 子模块更新 --init'
有什么想法我做错了吗?
你没有做错任何事。该存储库的子模块仅部分配置。
子模块由主存储库中所谓的
gitlink树条目组成,该条目引用完全独立的内部存储库中的特定提交对象。源树根部的 ... 文件中的记录.gitmodules为子模块分配逻辑名称,并描述应从中克隆子模块的默认 URL。
该存储库包含一个.gitmodules文件,但不包含gitlink对象。
GitHub显示带有灰色文件夹图标 的正确子模块,该存储库中没有该图标:

由于有问题的.gitmodules文件仅包含一个条目,因此在您的情况下我建议
删除.gitmodules文件,
git rm .gitmodules
Run Code Online (Sandbox Code Playgroud)正确添加子模块,
git submodule add https://github.com/midas-journal/midas-journal-843 PointInCircle
Run Code Online (Sandbox Code Playgroud)并承诺。
git commit -m "Fix PointInCircle submodule"
Run Code Online (Sandbox Code Playgroud)的输出git commit应该显示PointInCircle已添加模式160000(指示 a gitlink),并且您的存储库现在应该已正确配置。使用git submodule status来确定:
$ git submodule status
9bc2651367f8cc5f47ac5f6c708db2f9a71d8fd8 PointInCircle (heads/master)
Run Code Online (Sandbox Code Playgroud)
您可能想通过修复打开对父存储库的拉取请求,但由于它只包含三年前的单个提交,我怀疑它已被放弃。
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |