我有一个项目,在lib/three20有一个子模块
我的.gitmodule文件是这样的:
[submodule "lib/three20"]
path = lib/three20
url = git://github.com/facebook/three20.git
我克隆了这个在过去没有错误,(git子模块init紧随git子模块更新),它已经工作了一段时间。
我试图克隆这个到一个新的机器,现在我在git子模块init上得到这个错误:
No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'
这个路径只是Xcode中的一个空文件夹,我用它来存放来自另一个目录的项目。它不是.gitmodules文件的一部分,所以我不知道它从哪里得到这个路径。
什么好主意吗?
没有找到子模块路径'path/to/submodule'的url
在.gitmodules中没有找到路径'path/to/submodule'的子模块映射
当我从根目录文件夹“cd”到。/resources/css/style.css时,这些错误就开始了。
我使用git init从style.css,认识到我的错误后,我已经添加
Git添加remote origin <url>。
所以,仍然在git bash中的style.css文件中,我使用git删除远程原点。
当我检查git remote时,远程链接已被删除。
Ultimately, after doing git init for the root directory, adding it to remote, the resources/css path was providing the submodule error/fatal errors listed up top. So, from the root directory, in git bash, I typed git rm --cached resources/css, deleted the css directory (saved the code), pushed the changes, and added a css directory and styles.css file within it in a different branch (optional) to see how the outcome would be after pushing changes again and checking the deployment on github pages. It worked! I know deleting directories isn't always ideal, especially in large projects, but just wanted to share one more way to fix this issue!
ps相当新的stackoverflow,所以我为冗长的文本道歉。
# 2022的答案
当我使用SourceTree来做这些事情时,它会吐出这条消息。
我遇到的信息是:
git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree submodule update --init --recursive
No submodule mapping found in .gitmodules for path 'SampleProject/SampleProject'
Completed with errors, see above
我的场景是我错用了项目目录,包含。git文件夹。
SourceTree认为这个文件夹是git的子模块,但实际上不是。
我的解决方案是使用命令行删除它。
$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"
清除git中的垃圾并保持清洁。
我为自己解决了这个问题。一开始我是这么做的:
git submodule add --branch master [URL] [PATH_TO_SUBMODULE]
事实证明,如果你想克隆主分支,不应该使用——branch选项的规范。它抛出以下错误:
fatal: Cannot force update the current branch.
Unable to checkout submodule '[PATH_TO_SUBMODULE]'
每次你试着做
git submodule sync
这个错误将被抛出:
No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'
在.gitmodules中需要的行永远不会被添加。
所以我的解决方案是:
git submodule add [URL] [PATH_TO_SUBMODULE]
文件夹映射可以在.git/modules文件夹中找到(每个文件夹都有参考其工作树的配置文件),因此确保这些文件夹对应于.gitmodules和.git/config中的配置。
因此.gitmodules有正确的路径:
[submodule "<path>"]
path = <path>
url = git@github.com:foo/bar.git
在[core]部分的.git/modules/<path>/config中,你有你的<path>的正确路径,例如。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
worktree = ../../../<path>
如果在.git/modules中没有正确的文件夹,那么你必须去你的子模块目录并尝试git reset HEAD——hard或git checkout master -f。如果这没有帮助,你可能想删除所有对损坏子模块的引用,然后重新添加它,然后参见:重命名git子模块。