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

任何人都知道缺少什么?


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

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

# rm -rf external_libraries/BEACHhtml
# git submodule update

看起来前面的checkout文件夹有问题,删除它,再次更新可以解决问题。


我有这个问题(片状网络,所以我得到了这样的子模块结帐),我解决了这个脚本(命名为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个目录并重新获取子模块来解决:

  • 转到external_libraries/BEACHhtml并查看.git文件。 它的内容应该像gitdir: ../../.git/modules/external_libraries/BEACHhtml
  • 删除external_libraries/BEACHhtml.git/modules/external_libraries/BEACHhtml目录。
  • 从现在开始, git submodule update运行时没有错误。

    链接地址: http://www.djcxy.com/p/16429.html

    上一篇: Git Submodules. Pulling into a new clone of the super

    下一篇: Update Git submodule to latest commit on origin