在添加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' 

任何想法可能导致这个?

如果我克隆相同的repo到testing目录(不通过submodule命令),它工作正常,并创build预期的文件。

要修复这个错误,你应该把具有相同path的文件夹删除到.git/modules/目录.git/modules/的子.git/modules/ 。 当子模块添加子模块时,对于子模块的url不正确时,可能会发生此错误。

你需要一个现有的repo中添加一个子模块,这个repo需要处于添加和提交submodule链接的状态, 并且子模块repo本身必须提交一个提交。

现在,如果您可以在其他地方创build常规克隆,则子模块回购本身必须正常。 但是,它看起来像submodule add抱怨,如果回购是空的而克隆没有。 这家伙build议这是可以通过再次运行相同的submodule add命令解决。

如果内部回购不是空的,请检查您想要包含子模块的回购。 转到你运行git submodule add的同一个目录,然后运行git statusgit branch来validation你的包含repo是否至less创build了一个分支并且不是奇怪的状态。

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

 git submodule add -b <branch> <repository> 

正如@ drew-noakes所暗示的,这可能是由于尝试使用.gitignore文件中列出的目录名添加子模块所致。