2012-04-02 69 views
1

我在使用git分支时遇到了一个问题。 在主分支中,我有一个包含标签v2.0的子模块。 我分支出一个新的分支说修复,并对其人工制品进行了一些更改,并通过“git checkout v3.0”将子模块更新到v3.0。我做了一个提交。 现在我转回到主,与“git结帐主”。它显示一条消息“M submodule”,指示子模块配置已更改并显示新的更改。子模块在主分支中也变为v3.0。分支中的子模块配置

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

+0

您确定您提交了新版本的子模块吗? – knittl 2012-04-02 15:26:21

+0

子模块更新并提交,但在外部。它不会在超级项目中改变。我刚刚在新分支中检出了子模块的新标签,将其提交并在我看到此信息时切换回主标签。 – maxmelbin 2012-04-02 15:44:00

+0

转换分支前'git status'输出是什么?它是否显示对子模块的任何修改? (也可以尝试'git status -s') – knittl 2012-04-02 15:45:37

回答

3

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