首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果包含的项目不在主分支上,则以递归方式推送子模块会抛出"fatal: src refspec必须命名一个ref“

如果包含的项目不在主分支上,则以递归方式推送子模块会抛出"fatal: src refspec必须命名一个ref“
EN

Stack Overflow用户
提问于 2019-04-23 23:49:19
回答 1查看 2.9K关注 0票数 11

我有一个包含三个子模块的git存储库。包含的存储库有两个分支masterdevelop。所有子模块只有一个分支-- master分支。

当包含的存储库在主分支上时,通过git push --recurse-submodules=on-demand推送到源的工作方式是预期的。包含项目及其子模块都会被推送。

现在问题来了。当包含的存储库在develop分支上时,我在通过git push --recurse-submodules=on-demand推送时遇到问题。取消推送操作并打印错误消息。

下面是我从git得到的完整输出:

代码语言:javascript
运行
复制
$ git push --recurse-submodules=on-demand
fatal: src refspec 'refs/heads/develop' must name a ref
fatal: process for submodule 'Frameworks/OpenLearnWareClient' failed

我可以通过首先手动推送每个子模块中的更改,然后推送包含的存储库来缓解这个问题。然而,这非常单调乏味,并且违背了--recurse-submodules=on-demand的目的。

这是我的.gitmodules文件:

代码语言:javascript
运行
复制
[submodule "Frameworks/OpenLearnWareKit"]
    path = Frameworks/OpenLearnWareKit
    url = git@github.com:kaiengelhardt/OpenLearnWareKit.git
    branch = master
[submodule "Frameworks/OpenLearnWareClient"]
    path = Frameworks/OpenLearnWareClient
    url = git@github.com:kaiengelhardt/OpenLearnWareClient.git
    branch = master
[submodule "Frameworks/KEFoundation"]
    path = Frameworks/KEFoundation
    url = git@github.com:kaiengelhardt/KEFoundation.git
    branch = master

我使用的是git版本2.20.1 (Apple Git-117)。

有谁知道这里出了什么问题,以及如何让递归推送工作吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-21 18:47:22

据我所知(我希望被证明是错的!)这不可能。Branches in submodules are an odd beast

一种接近的解决方法是使用git submodule foreach命令执行推送。这仍然很烦人,但至少它解决了“乏味”的问题。按如下方式组合命令,以确保子模块推送失败会中止父模块推送:

代码语言:javascript
运行
复制
git submodule foreach --recursive 'git push' &&
git push

据我所知,这在本质上等同于传递--recurse-submodules=on-demand,但适用于分支。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55815011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档