Git子模块。 拉入超级项目的新克隆

好。 所以我觉得我有这个舔…但现在….

我有一个项目,其中包括一个来自GitHub的小型图书馆作为子模块。 在超级项目的原始版本中,子模块按预期工作。

但是,我只是克隆了超级项目,做了我想我应该做的:“git submodule init”,得到子模块的目录出现,但是它是空的。

如果我现在试着去做

git submodule update 

我明白了

 fatal: Needed a single revision Unable to find current revision in submodule path 'external_libraries/BEACHhtml' 

如果我尝试

 git submodule foreach git pull 

我明白了

 Entering 'external_libraries/BEACHhtml' fatal: Where do you want to fetch from today? Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status. 

在我的.git / config中,我有这个:

 [submodule "external_libraries/BEACHhtml"] url = git@github.com:interstar/BEACHhtml.git 

在我的.gitmodules我有这个:

 [submodule "external_libraries/BEACHhtml"] path = external_libraries/BEACHhtml url = git@github.com:interstar/BEACHhtml.git 

任何人有一个想法缺less什么?

我有和你一样的问题。 这是git中的错误: http : //lists-archives.com/git/785138-git-submodule-update-is-not-fail-safe.html

总之,对于你的问题,请尝试:

 # rm -rf external_libraries/BEACHhtml # git submodule update 

看起来以前的结帐文件夹有问题,删除它,并再次更新解决问题。

我有这个问题(片状networking,所以我得到这样的子模块结帐),我解决了这个脚本(命名为git-submodule-fix所以我可以运行它作为git submodule-fix

 #!/bin/bash for arg do echo $arg find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr done 

如果你从git submodule update得到这个

 fatal: Needed a single revision Unable to find current revision in submodule path 'some/submodule/path' 

 git submodule-fix some/submodule/path git submodule update 

通过删除2个目录并重新获取子模块来解决:

  1. 转到external_libraries/BEACHhtml并查看.git文件。 它的内容应该像gitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. 删除external_libraries/BEACHhtml.git/modules/external_libraries/BEACHhtml目录。

从现在开始git submodule update运行没有错误。

使用diff工具来比较正在工作的原始克隆和这个。 另外, git submodule输出什么。 确保您在每次回购中指向同一分支。

我怀疑你已经切换到未定义子模块的分支或更旧版本。

希望这可以帮助

我在项目的子模块上遇到同样的问题。 当我试图克隆子模块分开它运作良好。

我已经尝试了上面的所有答案,但没有成功(git submodule update,…,删除子模块文件夹,…)。

在git(从Git-1.7.11-preview20120710)更新到最新版本(到Git-1.8.1.2-preview20130201)之后,问题就消失了。 奇怪的是,我的同事甚至有更旧的版本,工作没有任何问题,但他们在Mac上。 我在Win7 64bit。

我在Window7上。 运行'rm -rf src / sizzle',可以!

E:\ GitHub \ fork \ jquery> rm -rf src / sizzle
E:\ GitHub \ fork \ jquery> git子模块更新
子模块path“src / sizzle”:签出'19c7b3440385c9f628a7bc1c5769f6946fcc6887'

E:\ GitHub的\叉\的jQuery> grunt.cmd


保存为:主

完成,没有错误。