Git 分支中的子模块配置

Git 分支中的子模块配置,git,Git,我在处理git分支时遇到了一个问题。 在主分支中,我有一个子模块,其中包含标记v2.0。 我扩展到了一个新的分支,比如fix,并对其人工制品进行了一些更改,还通过“git checkout v3.0”将子模块更新为v3.0。这是我的承诺。 现在我切换回master,使用“git checkout master”。它显示一条消息“M submodule”,指示子模块配置已更改,并显示新的更改。主分支中的子模块也自行更改为v3.0 为什么会发生这种情况。为什么我不能在不自动更改子模块版本的情况下在分

我在处理git分支时遇到了一个问题。 在主分支中,我有一个子模块,其中包含标记v2.0。 我扩展到了一个新的分支,比如fix,并对其人工制品进行了一些更改,还通过“git checkout v3.0”将子模块更新为v3.0。这是我的承诺。 现在我切换回master,使用“git checkout master”。它显示一条消息“M submodule”,指示子模块配置已更改,并显示新的更改。主分支中的子模块也自行更改为v3.0


为什么会发生这种情况。为什么我不能在不自动更改子模块版本的情况下在分支之间切换?

修复分支具有子模块v3.0;主分支具有子模块v2.0。切换回主分支后,子模块保持为v3.0,因此“git状态”显示子模块更改。切换分支时,您需要执行“git子模块更新”-这将使子模块恢复到v2.0(master版本)。

您确定已提交新版本的子模块吗?子模块已更新并提交,但在外部。它不会从超级项目中更改。我刚刚在新分支中签出了子模块的一个新标记,提交了它,并在看到这一点时切换回主模块。
git status
在切换分支之前会输出什么?它是否显示对子模块的任何修改?(也可以尝试git status-s)