git submodule update --init 给出错误致命:需要单个修订版无法在子模块路径中找到当前修订版

Posted

技术标签:

【中文标题】git submodule update --init 给出错误致命:需要单个修订版无法在子模块路径中找到当前修订版【英文标题】:git submodule update --init gives error fatal: Needed a single revision Unable to find current revision in submodule path 【发布时间】:2016-11-08 17:12:38 【问题描述】:

当我执行git submodule update --init 时出现错误

致命:需要单个修订版无法在子模块路径“插件/插件名称”中找到当前修订版。

实际上,我正在尝试运行 Jenkins Job 来部署它。我在 Jenkins 中添加了递归更新子模块作为附加行为。致命:命令“git.exe submodule update --init --recursive”返回状态代码-1:这仅在我的本地发生,因为相同的命令对其他人有效。

【问题讨论】:

我刚刚遇到了同样的问题。事实证明,git 无法与服务器通信,因为我需要接受在子模块更新期间未显示的主机密钥(但如果您进行拉取)。接受主机密钥后,一切都开始按预期工作。 【参考方案1】:

试试git submodule foreach git pull

【讨论】:

请提供更多关于此命令的作用、您要回答的问题以及它如何回答该问题的评论。 这个命令解锁了一些东西。之后我就可以更新子模块了。 git submodule foreach git pull origin master【参考方案2】:

这是 Git 中隐藏的实际错误的示例,这是 Git 的典型 UX 陷阱。

在我的情况下,真正的错误是我使用了一个固定到不再存在的分支的子模块(例如,已经通过 Gitlab 合并和删除的功能分支)。验证您是否也是这种情况,如果是,请将子模块指向一个新分支。

【讨论】:

但是我必须为许多子模块这样做,这是很多工作。我猜子模块仍处于 alpha 版本。问题太多了。【参考方案3】:

我尝试了许多其他不起作用的建议,但对我有用的命令是:

git submodule sync
git submodule update --init

【讨论】:

以上是关于git submodule update --init 给出错误致命:需要单个修订版无法在子模块路径中找到当前修订版的主要内容,如果未能解决你的问题,请参考以下文章

git submodule update --init --recursive

git submodule update 致命错误:引用不是树

git submodule update时Permission denied 错误解决

git submodule

git submodule update --init 给出错误致命:需要单个修订版无法在子模块路径中找到当前修订版

Git/Bugfix系列fatal: in unpopulated submodule的分析和解决方案