git 无法在子模块路径中找到当前的原始/主版本

jrcvhitl  于 2023-06-20  发布在  Git
关注(0)|答案(8)|浏览(242)

在我的项目(使用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'

有人知道这里出了什么问题吗?

wljmcqd8

wljmcqd81#

在主存储库中运行它应该可以做到这一点:

git pull --recurse-submodules

根据其他讨论,特别是@ Tobu在他的评论中指出,如果错误仍然存在,可能需要首先:
删除子模块工作树(ext/blah)和GIT_DIR.git/modules/ext/blah)中的匹配文件夹
或者,您可以在子模块内部时,git checkout要从中提取的分支,然后运行git pull
结果应该是相同的。

yhxst69z

yhxst69z2#

在我的例子中,问题是Git子模块假设会有一个分支***origin/master***。相反,子模块仓库只有一个分支***main***。
我将branch=main添加到.gitmodules的子模块定义中。运行git submodule sync后,git submodule update --remote现在工作正常。

bsxbgnwa

bsxbgnwa3#

我也面临着同样的问题。已经解决了存储子模块的文件夹就在那里。当我手动删除文件夹时,它得到了解决。

ig9co6j1

ig9co6j14#

这个问题似乎已经在这个帖子中解决了:Git submodules - pulling into a new clone of the super project。简而言之,您应该尝试:

# rm -rf JSONedit
# git submodule update
yws3nbqq

yws3nbqq5#

fatal: Needed a single revision
Unable to find current origin/master revision in submodule path
  • 我面对这种问题……
  • 我通过更新git版本来解决这个问题
xyhw6mcr

xyhw6mcr6#

在我的例子中,错误日志是
无法在子模块路径“JSONetit”中找到当前的origin/HEADER修订版本
这是因为我的多模块不识别子模块的 checkout 分支。我通过在.gitmodules文件中设置子模块分支来解决这个问题。
在多模块目录中

git config -f .gitmodules submodule.{submodule name}.branch {branch name}
git config -f .gitmodules submodule.JSONedit.branch main

我想你可能没有主人而是主人。通过命令'git branch'检查子模块目录中的分支。

xesrikrc

xesrikrc7#

在我的例子中,我已经删除并再次克隆了一个项目,但是git为我的子模块存储的提交不再存在于原始存储库中。于是我就这么做了:

$ rm -rf <submodule name>
$ git clone <submodule url>
$ cd <submodule name> 
$ git checkout <whatever commit/branch you wanted>
$ cd <main project>
$ git add <path/to/submodule>
$ git commit -m "fixed my submodule"
$ git push
6ojccjat

6ojccjat8#

我在一个Jenkins构建中遇到了这个问题,其中一个子模块确实使用了origin/main而不是origin/master。我发现我是在搬起石头砸自己的脚,因为我打开了**“将跟踪子模块更新到分支尖端”**的选项。将其关闭解决了错误:

在我的例子中,这个选项并不是我真正想要的,因为我在子模块中使用了特定的提交id。

相关问题