在添加 git 子模块时“ You are on a Branch yet to be born”

我试图添加一些子模块到我的 .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 克隆到一个测试目录(而不是通过子模块命令) ,那么它就可以正常工作,并创建预期的文件。

37611 次浏览

你需要添加一个子模块 在里面一个现有的回购,该回购需要在一个状态添加和提交的子模块链接,还有的子模块回购本身必须有一个提交检出。

Now, the submodule repo itself must be ok if you can create a regular clone elsewhere. However, it looks like submodule add complains if the repo is empty while clone does not. 这家伙 suggests this is fixable by just running the same submodule add command again.

如果内部回购是 没有空,检查回购你想 包容的子模块。切换到运行 git submodule add的同一目录,然后运行 git statusgit branch,以验证包含的回购至少创建了一个分支,并且没有处于奇怪的状态。

若要修复此错误,应删除具有与 .git/modules/目录中子模块相同路径的文件夹。当子模块首次添加时,子模块的 url 不正确时,可能会发生此错误。

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

git submodule add -b <branch> <repository>

正如@Drew-noakes 所暗示的,这可能是由于试图使用 。吉蒂诺尔文件中列出的目录名添加子模块造成的。