在 .gitmodules 中找不到路径 xx 的子模块映射

Sin*_*met 4 git github git-submodules

我在堆栈上尝试了很多不同的答案,但没有一个有效。我正在尝试将存储库添加为包含另一个子模块的子模块。所以我做的是这样的:

git submodule add -b develop git@github.com:submoduleRepo
Run Code Online (Sandbox Code Playgroud)

子模块将添加到存储库中,并在其中包含子模块的文件夹。但是该文件夹是空的。所以我跟进这个命令:

git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)

这没有给我带来任何回报。如果我进入子模块的目录cd submoduleRepo,然后输入 git submodule,我会得到:

fatal: no submodule mapping found in .gitmodules for path 'src/app/nestedSubmoduleRepo'
Run Code Online (Sandbox Code Playgroud)

这是我的主存储库的 .gitmodules:

[submodule "submoduleRepo"]
    path = submoduleRepo
    url = git@github.com:submoduleRepo.git
    branch = develop
Run Code Online (Sandbox Code Playgroud)

在 submoduleRepo/.gitmodules 中:

[submodule ".\\src\\app\\nestedSubmoduleRepo"]
    path = .\\src\\app\\nestedSubmoduleRepo
    url = git@github.com:nestedSubmoduleRepo.git
Run Code Online (Sandbox Code Playgroud)

为什么我不断收到此错误并且目录未填充?

编辑:

一旦我运行--init --recursive一次,它就会给我错误:

fatal: No url found for submodule path 'submoduleRepo/src/app/nestedSubmoduleRepo' in .gitmodules
Failed to recurse into submodule path 'submoduleRepo'
Run Code Online (Sandbox Code Playgroud)

我的git配置:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = git@github.com:mainRepo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "submoduleRepo"]
    url = git@github.com:submoduleRepo.git
    active = true
Run Code Online (Sandbox Code Playgroud)

bk2*_*204 5

问题是您的子模块存储库在.gitmodules文件中使用反斜杠。Git 在存储库中使用正斜杠作为路径,因为它们可以跨平台工作(而反斜杠则不能),并且它无法知道您的存储库是否旨在跨平台。

您需要更新子模块存储库以包含文件中的正确条目(并且您还应该删除.路径组件)。一旦您提交了该内容并使用新提交更新了父存储库,git submodule update --init --recursive就应该可以正常工作。