Git子模块失败,提示“无法访问子模块”。

17

操作系统:Linux

Git 版本:2.26.2

我的仓库 Git 提供程序:GitLab

失败的子模块提供程序:GitHub

.gitmodules

[submodule "libraries/stb"]
    path = libraries/stb
    url = https://github.com/nothings/stb.git
    branch = master
[submodule "libraries/harfbuzz"]
    path = libraries/harfbuzz
    url = https://github.com/harfbuzz/harfbuzz.git
    branch = master
[submodule "libraries/shaderc"]
    path = libraries/shaderc
    url = https://github.com/google/shaderc.git
    branch = master
[submodule "libraries/freetype2"]
    path = libraries/freetype2
    url = https://github.com/aseprite/freetype2.git
    branch = master
[submodule "libraries/VulkanMemoryAllocator"]
    path = libraries/VulkanMemoryAllocator
    url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
    branch = master
[submodule "libraries/googletest"]
    path = libraries/googletest
    url = https://github.com/google/googletest.git
    branch = master
[submodule "libraries/Eigen"]
    path = libraries/Eigen
    url = https://gitlab.com/libeigen/eigen.git
    branch = master
[submodule "libraries/benchmark"]
    path = libraries/benchmark
    url = https://github.com/google/benchmark.git
[submodule "libraries/rapidcheck"]
    path = libraries/rapidcheck
    url = https://github.com/emil-e/rapidcheck.git
    branch = master
[submodule "libraries/magic_get"]
    path = libraries/magic_get
    url = https://github.com/apolukhin/magic_get.git
    branch = master

命令和输出:

git pull --recurse-submodules=true

Fetching submodule libraries/Eigen
Fetching submodule libraries/VulkanMemoryAllocator
Fetching submodule libraries/benchmark
Fetching submodule libraries/freetype2
Fetching submodule libraries/googletest
Fetching submodule libraries/harfbuzz
Could not access submodule 'libraries/magic_get'
Could not access submodule 'libraries/rapidcheck'
Could not access submodule 'libraries/shaderc'
Could not access submodule 'libraries/stb'

git子模块状态:

git submodule status 
 a145e4adf5e71391d64c0ab150a8c26851cf332d libraries/Eigen (before-git-migration-159-ga145e4adf)
 755fd47121ce0c77ef11818e4987790ae99c2eba libraries/VulkanMemoryAllocator (v2.1.0-334-g755fd47)
 d3ad0b9d11c190cb58de5fb17c3555def61fdc96 libraries/benchmark (v1.5.0-56-gd3ad0b9)
 fbbcf50367403a6316a013b51690071198962920 libraries/freetype2 (VER-2-10-0)
 dcc92d0ab6c4ce022162a23566d44f673251eee4 libraries/googletest (release-1.8.0-2331-gdcc92d0a)
 89ad3c6cc520517af15174391a9725e634929107 libraries/harfbuzz (2.6.5-71-g89ad3c6c)

Git树

git ls-tree -r HEAD
160000 commit a145e4adf5e71391d64c0ab150a8c26851cf332d  Eigen
160000 commit 755fd47121ce0c77ef11818e4987790ae99c2eba  VulkanMemoryAllocator
160000 commit d3ad0b9d11c190cb58de5fb17c3555def61fdc96  benchmark
160000 commit fbbcf50367403a6316a013b51690071198962920  freetype2
160000 commit dcc92d0ab6c4ce022162a23566d44f673251eee4  googletest
160000 commit 89ad3c6cc520517af15174391a9725e634929107  harfbuzz
160000 commit 762a4ec1f4458a84bc19cd6efc1e993add90ec95  libigl
160000 commit 03afd0b83ce67062a105cfcbe80bbca152743f0a  magic_get
160000 commit 7bc7d302191a4f3d0bf005692677126136e02f60  rapidcheck
160000 commit 011139094ec790ff7f32ea2d80286255fc9ed18b  shaderc
160000 commit b42009b3b9d4ca35bc703f5310eedc74f584be58  stb

这在大约6个月前曾经有效。


你无法获取的仓库有没有发生任何变化?也许是它们的URL改变了?或者分支主干不再存在了? - SpiderPig1297
据我所知并没有。所有这些库都相当受欢迎,并由大型组织维护。如果它们会轻易地破坏依赖关系,我会感到震惊的。 - Makogan
1个回答

33

以防万一,请确保所有子模块都已初始化:

git submodule update --init --recursive

然后,再次尝试pull --recurse-submodules=true

不知何故,激活跟踪可以改善情况:

git -c trace2.eventTarget=1 pull --recurse-submodules=true

1
尝试了这种方法后错误仍然存在。 - Makogan
1
命令似乎已经成功了,它拉取了所有的子模块,即带有事件目标的那个。 - Makogan
1
@Makogan git -c trace2.eventTarget=1 pull --recurse-submodules=true 是什么意思? - VonC
1
@Makogan 奇怪!我已经相应地编辑了答案。 - VonC
我也遇到了同样的问题。当尝试从以下存储库进行git pull时,“git -c trace2.eventTarget=1 pull”会消除“无法访问子模块”的错误:https://github.com/google/skywater-pdk - 克隆是从https://github.com/efabless/caravel-lite/blob/main/Makefile(“make pdk”)中完成的,该文件不会有意初始化所有子模块,因为并非所有子模块都实际上是必需的。这会导致在使用git 2.25.1时出现上述错误,但是当不使用“-c trace2.eventTarget=1”时则不会。 - DCTLib
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接