在我的项目(使用git
)中,我需要使用a library,该项目仍在进行中。我决定为这个库创建一个子模块,因为我想不时地更新它的最新版本(我不打算在那里做自己的更改)。
我说了:
git submodule add https://github.com/mb21/JSONedit.git
git commit -am 'added JSNedit submodule'
git push -u origin master
git pull origin master
然后,我在本地文件夹中看到了JSONedit文件夹,并在我的git文件夹中看到了一个链接。但是当我执行git submodule update --remote JSONedit/
时,我得到了以下错误:
fatal: Needed a single revision
Unable to find current origin/master revision in submodule path 'JSONedit'
有人知道这里出了什么问题吗?
8条答案
按热度按时间wljmcqd81#
在主存储库中运行它应该可以做到这一点:
根据其他讨论,特别是@ Tobu在他的评论中指出,如果错误仍然存在,可能需要首先:
删除子模块工作树(ext/blah)和GIT_DIR(
.git/modules/ext/blah
)中的匹配文件夹或者,您可以在子模块内部时,
git checkout
要从中提取的分支,然后运行git pull
。结果应该是相同的。
yhxst69z2#
在我的例子中,问题是Git子模块假设会有一个分支***origin/master***。相反,子模块仓库只有一个分支***main***。
我将
branch=main
添加到.gitmodules
的子模块定义中。运行git submodule sync
后,git submodule update --remote
现在工作正常。bsxbgnwa3#
我也面临着同样的问题。已经解决了存储子模块的文件夹就在那里。当我手动删除文件夹时,它得到了解决。
ig9co6j14#
这个问题似乎已经在这个帖子中解决了:Git submodules - pulling into a new clone of the super project。简而言之,您应该尝试:
yws3nbqq5#
xyhw6mcr6#
在我的例子中,错误日志是
无法在子模块路径“JSONetit”中找到当前的origin/HEADER修订版本
这是因为我的多模块不识别子模块的 checkout 分支。我通过在
.gitmodules
文件中设置子模块分支来解决这个问题。在多模块目录中
我想你可能没有主人而是主人。通过命令'git branch'检查子模块目录中的分支。
xesrikrc7#
在我的例子中,我已经删除并再次克隆了一个项目,但是git为我的子模块存储的提交不再存在于原始存储库中。于是我就这么做了:
6ojccjat8#
我在一个Jenkins构建中遇到了这个问题,其中一个子模块确实使用了
origin/main
而不是origin/master
。我发现我是在搬起石头砸自己的脚,因为我打开了**“将跟踪子模块更新到分支尖端”**的选项。将其关闭解决了错误:在我的例子中,这个选项并不是我真正想要的,因为我在子模块中使用了特定的提交id。