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

Sof*_*mur 10 git git-submodules

在我的项目(使用git)中,我需要使用一个仍在进行中的库.我决定为该库创建一个子模块,因为我想不时更新它的最新版本(我不打算在那里进行自己的更改).

我做了:

git submodule add https://github.com/mb21/JSONedit.git
git commit -am 'added JSNedit submodule'
git push -u origin master
git pull origin master
Run Code Online (Sandbox Code Playgroud)

然后,我确实在我的本地文件夹中看到了JSONedit文件夹,并在我的git文件夹中看到了一个链接.但是当我这样做时git submodule update --remote JSONedit/,我得到了以下错误:

fatal: Needed a single revision
Unable to find current origin/master revision in submodule path 'JSONedit'
Run Code Online (Sandbox Code Playgroud)

有谁知道这里有什么问题吗?

F1i*_*1iX 47

就我而言,问题是 Git 子模块假设会有一个分支origin/master。相反,子模块存储库只有一个分支main

我添加branch=main到了子模块定义中.gitmodules。运行后git submodule syncgit submodule update --remote现在工作正常。


teh*_*ehp 20

git pull --recurse-submodules
Run Code Online (Sandbox Code Playgroud)

在主存储库中运行它应该可以解决问题.


或者,您可以git checkout在子模块内部从中拉出分支,然后运行git pull.

结果应该是一样的.

  • 另外我认为它应该是`git submodule foreach --recursive git pull`,否则它会给出错误`fatal: Couldn't find Remote ref master`。 (2认同)

小智 8

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


Ash*_*gar 8

fatal: Needed a single revision
Unable to find current origin/master revision in submodule path
Run Code Online (Sandbox Code Playgroud)
  • 我面临这样的问题...
  • 我通过更新 git 版本来解决这个问题

  • 令人惊讶的是,从 2.24.3 更新到 2.36.0 确实解决了我的问题。 (3认同)

M. *_*rog 6

似乎该问题已在以下线程中解决: Git子模块-拉入super项目的新克隆中。简而言之,您应该尝试:

# rm -rf JSONedit
# git submodule update
Run Code Online (Sandbox Code Playgroud)