Git 如何从没有子模块的分支签出带有子模块的分支

Git 如何从没有子模块的分支签出带有子模块的分支,git,git-submodules,Git,Git Submodules,我在本地机器上有三个分支: 主人 带子模块的特征分支 无子模块特征分支 没有子模块的分支过去有一个子模块,我按照中的说明删除了子模块。我不想从master和带有子模块的功能分支中删除子模块 但是,现在我已经完成了不带子模块的功能分支,我想切换到带子模块的功能分支。因此,我进行了git签出,但得到了错误: fatal: not a git repository: src/vendor/mysubmodule/../../../../../.git/modules/src/vendor/mysu

我在本地机器上有三个分支:

  • 主人
  • 带子模块的特征分支
  • 无子模块特征分支
没有子模块的分支过去有一个子模块,我按照中的说明删除了子模块。我不想从
master
和带有子模块的
功能分支中删除子模块

但是,现在我已经完成了不带子模块的
功能分支
,我想切换到带子模块的
功能分支
。因此,我进行了git签出,但得到了错误:

fatal: not a git repository: src/vendor/mysubmodule/../../../../../.git/modules/src/vendor/mysubmodule

我如何修复它,使带有子模块的分支拥有它,而没有子模块的分支没有它,并且我可以使用git checkout自由地来回切换?

我已经1-2天不知道是什么问题。 以下是我迄今为止找到的最接近(也是最糟糕)答案的链接:

快速回答:

Supposing, for example, branch master has submodule A and branch alpha has submodule B.

To properly checkout master you should, essentially
git submodule deinit .
git checkout master
git submodule update --init --recursive

To go back to alpha, again
git submodule deinit .
git checkout alpha
git submodule update --init --recursive

IF <代码> Git签出的重复副本——递归子模块不够,您应该考虑使用<代码> POST CuthOuts< /Cord>挂钩。我有一个非常类似的问题:需要在子模块与分支之间切换,而没有分支。你的回答使我走上了正确的道路。当我有能力的时候,我会建议你做一些澄清性的编辑(有些东西上面有一个完整的“建议编辑队列”,所以我真的不知道它是什么)。