繁体   English   中英

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

[英]“You are on a branch yet to be born” when adding git submodule

我试图在我的.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命令),它可以正常工作,并创建预期的文件。

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

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

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

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

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

git submodule add -b <branch> <repository>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM