Ben*_*man 311 git git-submodules
我有一个子模块的项目 lib/three20
我的.gitmodule文件看起来像这样:
[submodule "lib/three20"]
path = lib/three20
url = git://github.com/facebook/three20.git
Run Code Online (Sandbox Code Playgroud)
我过去克隆过这个没有错误,(git submodule init接下来是a git submodule update)并且它已经工作了一段时间.
我试图将其克隆到一台新机器,现在我收到此错误git submodule init:
No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'
Run Code Online (Sandbox Code Playgroud)
该路径只是Xcode中的一个空文件夹,用于存放其他目录中的项目.它不是.gitmodules文件的一部分,所以我看不到它从哪里获得这条路径.
有任何想法吗?
小智 391
在.gitmodules中找不到路径'OtherLibrary/MKStore'时的子模块映射
$ git submodule update --init
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生错误.花了一分钟后,在stackoverflow中找到了答案.
$ git rm --cached OtherLibrary/MKStore
Run Code Online (Sandbox Code Playgroud)
然后再次更新子模块.它工作正常.
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules
Von*_*onC 289
在rajibchowdhury的回答(upvoted)之后,使用git rm命令建议用于删除索引中指示子模块的特殊条目(具有特殊模式的'文件夹' 160000).
如果未在(如原始问题中的' '中)引用该特殊条目路径,则需要将其删除,以避免" 找不到路径中的子模块映射 "错误消息..gitmoduleClasses/Support/Three20.gitmodules
您可以检查索引中引用子模块的所有条目:
git ls-files --stage | grep 160000
Run Code Online (Sandbox Code Playgroud)
上一个答案(2010年11月)
你可能没有正确地声明你的初始子模块(即在我的旧答案中没有任何尾部'/' ,即使你的.gitmodule路径看起来还不错).
这个帖子提到:
从新的克隆运行'git submodule init'时会出现同样的错误吗?
如果是这样,你就有问题了.如果没有子模块,删除
.gitmodules和.git/config中对子模块的任何引用,并确保Pikimal目录中没有.gitdir.
如果这样可以解决问题,请检查并在巡航工作副本上执行相同操作.
显然,不要删除主.gitmodules文件,而是.gitmodules在工作树中查看其他额外文件.
仍然在"不正确的子模块初始化"的主题中,Jefromi提到了实际上是gitlinks的子模块.
请参阅如何跟踪未跟踪的内容?为了将这样的目录转换为真正的子模块.
Joh*_*nny 22
当我使用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
Run Code Online (Sandbox Code Playgroud)
我的方案是我误用了包含.git文件夹的项目目录.
SourceTree将此文件夹视为git子模块,但实际上并非如此.
我的解决方案是使用命令行删除它.
$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"
Run Code Online (Sandbox Code Playgroud)
删除git中的垃圾并保持清洁.
luk*_*sak 16
我为我解决了这个问题.最初我尝试这样做:
git submodule add --branch master [URL] [PATH_TO_SUBMODULE]
Run Code Online (Sandbox Code Playgroud)
事实证明,如果要克隆主分支,则不应使用--branch选项的规范.它抛出此错误:
fatal: Cannot force update the current branch.
Unable to checkout submodule '[PATH_TO_SUBMODULE]'
Run Code Online (Sandbox Code Playgroud)
每次你尝试做一个
git submodule sync
Run Code Online (Sandbox Code Playgroud)
将抛出此错误:
No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'
Run Code Online (Sandbox Code Playgroud)
而.gitmodules中所需的行永远不会被添加.
所以解决方案对我来说是这样的:
git submodule add [URL] [PATH_TO_SUBMODULE]
Run Code Online (Sandbox Code Playgroud)
小智 9
我刚尝试在我的repo的新结帐时"git submodule init"时遇到此错误.事实证明我最初使用错误的案例指定了模块子文件夹.因为我在Mac上使用区分大小写的文件系统(hurr),所以它失败了.例如:
git submodule add git@github.com:user/project.git MyApp/Resources/Project
Cloning into 'MyApp/Resources/Project'
Run Code Online (Sandbox Code Playgroud)
成功但麻烦的是磁盘上的路径是
Myapp/Resources/Project
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么git将模块初始化为错误的文件夹(忽略我的命令中的错误情况),然后使用后续命令正确操作(失败).
小智 9
在文件.gitmodules 中,我替换了字符串
"path = thirdsrc\boost"
Run Code Online (Sandbox Code Playgroud)
和
"path = thirdsrc/boost",
Run Code Online (Sandbox Code Playgroud)
它解决了!- -
小智 5
刚出现这个问题.有一段时间我尝试了关于删除路径的建议,git删除路径,删除.gitmodules,从.git/config中删除条目,添加子模块,然后提交并推送更改.这令人费解,因为当我执行"git commit -a"时看起来没什么变化所以我试着推动删除,然后推动读取使其看起来像一个变化.
过了一会儿,我意外地注意到,在删除所有内容之后,如果我运行"git submodule update --init",它会有一条关于git应该不再具有任何引用的特定名称的消息:子模块的存储库名称是链接,而不是它检查出来的路径名称.Grepping显示此引用位于.git/index中.所以我运行了"git rm --cached repo-name",然后读取了模块.当我这次提交时,提交消息包含一个更改,它正在删除此意外对象.之后它工作正常.
不确定发生了什么,我猜是有人误用了git submodule命令,可能会反转参数.可能是我甚至...希望这有助于某人!
该文件夹映射中可以找到.git/modules的文件夹(各自具有config文件参照其worktree),因此要确保这些文件夹对应于配置在.gitmodules和.git/config。
因此.gitmodules具有正确的路径:
[submodule "<path>"]
path = <path>
url = git@github.com:foo/bar.git
Run Code Online (Sandbox Code Playgroud)
和.git/modules/<path>/config在[core]部分你已经在正确的道路,以你的<path>,如
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
worktree = ../../../<path>
Run Code Online (Sandbox Code Playgroud)
如果.git/modules缺少正确的文件夹,则必须转到子模块目录并尝试git reset HEAD --hard或git checkout master -f。如果这样做无济于事,您可能要删除对损坏的子模块的所有引用,然后再次添加它,然后参阅:重命名git子模块。
| 归档时间: |
|
| 查看次数: |
234920 次 |
| 最近记录: |