git - Github 子模块自动分支切换
问题描述
我有:
- 我们称为“MAIN”的主存储库
- 我们称为“SUB”的子模块存储库
- 在 MAIN 中,我将 SUB 添加为子模块
- 两个 repos 都在 master 分支中
现在我需要做的是在 MAIN 和 SUB 中创建一个分支,这样当我在 MAIN 上的这个分支上时,我也可以在 SUB 中切换到一个特定的分支。这似乎是不可能的。
我所做的是我branch_sub
在 SUB 中创建了一个分支(称为)并推送了新分支。现在在 MAIN 中,我在 MAIN 中创建了另一个分支(称为branch_main
),并修改了 .gitmodule 和 .git/config 都设置branch_sub
为“分支”字段,这样子模块应该指向那个特定的分支。将提交推送到 MAIN 的分支中。
现在,如果我这样做git submodule update
,SUB 会返回到 master 分支和原始提交。为什么?这是非常愚蠢的imo。如果我手动切换到branch_sub
,然后在 MAIN 中执行git submodule update --remote
,则 SUB 保持正确的提交,但在分离HEAD
而不是分支中branch_sub
:(。
任何提示?有可能我需要做什么吗?这对我来说似乎很基础,但 git submodule 似乎并不容易支持它。
解决方案
你想要达到的目标是不可能的。子模块总是检查某个提交,而不是一个分支,因此总是处于分离的 HEAD 状态。正如您所经历的那样,签出的提交可能由子模块的分支集决定。另请参阅此答案。
推荐阅读
- python - cx-freeze 生成一些文件,但因出现长错误而停止,
- sql - 按 id 更新多列
- ios - AR 在我的 iOS 14 和 Xcode 12.3 上的 iOS 应用程序中无法正常工作,世界跟踪性能受到资源限制的影响
- flash - 如何在 IBM Datastage Hierarchical Data 中替换 Flash
- python - Scray shell URL 返回 404 进行无限滚动
- android - 使用底部导航片段仅调用一次 API
- linux - 在 docker 下使用来自 Perl 的 capget syscall 和 capsh --drop=cap_sys_admin
- javascript - 使用多种变体过滤 MongoDB 集合
- javascript - 寻找任何替代状态管理工具来做出反应,而不是 redux
- python - 在 Python 中编写带有标题的阿拉伯语 rtf 文件