124

我正在尝试将一些子模块添加到我的.vim/bundles目录中,当我尝试添加这个特定的 repo 时,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 克隆到测试目录(不是通过 submodule 命令),它可以正常工作,并创建预期的文件。

4

4 回答 4

219

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

于 2012-08-22T11:53:21.797 回答
15

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

git submodule add -b <branch> <repository>
于 2015-05-22T09:25:21.430 回答
13

您需要现有 repo 中添加一个子模块,该 repo 需要处于添加和提交子模块链接的状态,并且子模块 repo 本身必须具有提交才能签出。

现在,如果您可以在其他地方创建常规克隆,则子模块 repo 本身必须没问题。submodule add但是,如果 repo 是空的而 clone 不是,它看起来会抱怨。这个人建议这可以通过submodule add再次运行相同的命令来解决。

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

于 2012-08-09T17:26:48.273 回答
0

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

于 2015-08-21T21:33:08.563 回答