我在stack上尝试了很多不同的答案,但都不起作用。我正在尝试添加一个存储库作为包含另一个子模块的子模块。所以我做的是:
git submodule add -b develop git@github.com:submoduleRepo
子模块被添加到存储库中,并包含子模块的文件夹。但是文件夹是空的。所以我接下这个命令:
git submodule update --init --recursive
这对我没有任何回报。如果我转到子模块cd submoduleRepo
的目录,然后键入git子模块,我得到:
fatal: no submodule mapping found in .gitmodules for path 'src/app/nestedSubmoduleRepo'
这是我的主回购的.gitmodule:
[submodule "submoduleRepo"]
path = submoduleRepo
url = git@github.com:submoduleRepo.git
branch = develop
在子模块Repo/.gitmodules:中
[submodule ".\src\app\nestedSubmoduleRepo"]
path = .\src\app\nestedSubmoduleRepo
url = git@github.com:nestedSubmoduleRepo.git
为什么我一直收到这个错误,并且目录没有被填充?
编辑:
一旦我运行了--init --recursive
,它就会给我错误:
fatal: No url found for submodule path 'submoduleRepo/src/app/nestedSubmoduleRepo' in .gitmodules
Failed to recurse into submodule path 'submoduleRepo'
我的git-config:
[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
问题是您的子模块repo在.gitmodules
文件中使用反斜杠。Git在存储库中使用正斜杠作为路径,因为它们可以跨平台工作(反斜杠不可以(,而且它无法知道您的存储库是否打算跨平台。
您需要更新子模块存储库以在文件中包含正确的条目(还应该删除.
路径组件(。一旦您提交了它并用新的提交更新了父存储库,git submodule update --init --recursive
应该可以正常工作。