添加git子模块时,“您正在诞生的分支”


116

我试图在.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'

知道是什么原因造成的吗?

如果我将同一存储库克隆到测试目录(而不是通过submodule命令),则可以正常工作并创建所需的文件。

Answers:


210

要修复该错误,您应该删除.git/modules/目录中子模块具有相同路径的文件夹。当添加子模块时,URL对于子模块而言第一次不正确时,可能会发生此错误。


2
谢谢,做到了。起初有点不太明显,因为我正克隆.vim/bundle/vim-scala到删除路径是.git/modules/.vim/bundle/vim-scala
matt b

2
如果您在Windows上,请注意,除非您dir /AH
paxos1977 2012年

13
看到删除该.git/modules/path/to/submodule目录并尝试重新添加子模块后,收到错误消息。以下路径被您的.gitignore文件之一忽略:path / to / submodule
德鲁·诺阿克斯

1
@Drew Noakes删除第一次运行git子模块add之后创建的.vim / bundle / vim-scala
PiotrKról2013年

在Windows上,您还可以使用Windows资源管理器选项(在您选择查看文件扩展名的位置),以查看GUI中的隐藏文件夹并将其删除。
user83358 2013年

13

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

现在,如果您可以在其他地方创建常规克隆,则子模块存储库本身必须正常。但是,好像submodule add抱怨仓库是否为空,而克隆库是否为空。这个家伙建议通过submodule add再次运行同一命令可以解决此问题。

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


我已经验证了所有这些内容。当我将所需的仓库签出到另一个目录时,它具有许多文件和一个master分支。我试图将其添加到master分支中的子模块中的仓库,没有明显的问题(状态返回一些修改后的文件,仅此而已),最奇怪的是,我可以将其他子模块添加到该存储库中。
matt b

同样奇怪的是:在fatal我的操作员发出警告之后,git在留下了一个空目录.vim/bundle/vim-scala。我还注意到,即使没有.gitmodules被修改,它也向github.com repo添加了一些行.git/config,但删除了这些行后,我仍然得到相同的fatal错误消息。
matt b

7
+1啊!This guy suggests this is fixable by just running the same submodule add command again.。我一直在努力寻找一个合理的答案,这个问题终于解决了。这是从BitBucket创建子模块时在MSYS下用于git 1.8.0的,因此,如果您处于相同情况,请首先尝试此操作。
亚伦·牛顿

加两次也对我有用。但是我不明白为什么。有什么解释吗?
Elise,

在这里也添加两次。我很想知道为什么,虽然
维尼修斯丹塔斯

12

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

git submodule add -b <branch> <repository>

1
在我的情况下,repo是新创建的,因此没有任何文件和分支(为空),因此受到了git submodule add -b master <repo.git> <folder>帮助
vladkras

这是我的问题,我的子模块只有2个分支,它们都不是master您为我工作的解决方案。
Guerneen4 '17

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.