如何从没有分支的分支中检出带有子模块的分支

时间:2019-06-05 18:38:15

标签: git git-submodules

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

  • 主人
  • 带有子模块的功能分支
  • 功能分支无子模块

不带子模块的分支曾经有一个子模块,我按照this SO post中的说明删除了子模块。我不想从masterfeature-branch-with-submodule中删除子模块。

但是,既然我已完成feature-branch-without-submodule的操作,我想切换到feature-branch-with-submodule。因此,我做了 git checkout ,但收到了错误消息:

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

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

1 个答案:

答案 0 :(得分:2)

我已经1-2天在想什么问题了。 这是到目前为止我找到的最接近(而且确实很糟糕)答案的链接:

Checkout branch with different submodules is not working

快速解答:

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