添加git子模块时,"你还在分支上"

mat*_*t b 114 git git-submodules

我试图几个子模块添加到我的.vim/bundles目录,当我尝试添加这种特殊的回购Git的给了我一个奇怪的错误,我以前从未见过:

$ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala
fatal: You are on a branch yet to be born
Unable to checkout submodule '.vim/bundle/vim-scala'
Run Code Online (Sandbox Code Playgroud)

知道是什么原因引起的吗?

如果我将相同的repo克隆到测试目录(而不是通过submodule命令),它可以正常工作,并创建预期的文件.

lis*_*nko 205

要修复该错误,您应该删除与目录中子模块相同路径的文件夹.git/modules/.当添加子模块时第一次使用子模块的url不正确时,可能会发生此错误.

  • 在我看到删除`.git/modules/path/to/submodule`目录并尝试重新添加子模块后,我收到错误_以下路径被一个.gitignore文件忽略:path/to/submodule_. (13认同)
  • 谢谢,这就是诀窍.起初有点不明显,因为我克隆到`.vim/bundle/vim-scala`,删除的路径是`.git/modules/.vim/bundle/vim-scala` (2认同)
  • 如果您在Windows上,请注意.git/modules下的目录可能不会显示,除非您是"dir/AH" (2认同)

Use*_*ess 12

您需要现有仓库中添加子模块,该仓库需要处于添加和提交子模块链接的状态,并且子模块仓库本身必须具有检出的提交.

现在,如果您可以在其他地方创建常规克隆,则子模块repo本身必须正常.但是,submodule add如果repo为空而克隆没有,则看起来像是抱怨.这家伙建议只需submodule add再次运行相同的命令就可以解决这个问题.

如果内部仓库不为空,请检查要包含子模块的仓库.切换到您运行的同一目录git submodule add,然后运行git status,并git branch验证包含的repo是否至少创建了一个分支并且不处于奇怪的状态.

  • +1唉!"这家伙建议再次运行相同的子模块添加命令就可以解决这个问题." 我一直在努力找到一个合理的答案来解决这个问题,最终解决了这个问题.这是在MSYS下的git 1.8.0,同时从BitBucket创建一个子模块,所以如果你处于相同的情况,请先试试. (7认同)

小智 11

如果要添加没有master分支的子模块,则会发生此错误.如果要在添加子模块时使用另一个分支(develop例如),可以使用以下命令:

git submodule add -b <branch> <repository>
Run Code Online (Sandbox Code Playgroud)