Android Studio 跨项目同步 git 个子模块

Android Studio syncs git submodules across projects

我有一个主项目,其中包含其他几个 GIT 项目作为子模块。所有项目都在 git-flow 之后分支。主项目始终使用子模块的 master 分支。子模块中的新功能在 developfeature 分支中的单独 IDE window 中开发。

如果我在 AndroidStudio 的不同 windows 中同时打开主项目和子模块,问题就开始了。 IDE 似乎认识到主项目 window 的子模块与在另一个 window 中打开的模块是同一个存储库,并开始保持签出提交同步。示例:

  1. 我打开主项目,子模块 A 在 master 分支的最后一次提交时签出。
  2. 我在新 IDE window 中打开模块 A 项目,并在 develop 分支的最后一次提交中签出。
  3. 我在子模块项目的 window.
  4. 中检查了一个不同的提交
  5. 主项目中的子模块自动更新为步骤3的提交。Git表明子模块提交已更改。
  6. 我将主项目子模块的分支改回master。 git 更改消失,但模块 A 也在其自己的 master 分支上签出 IDE window.

这使我无法在 AndroidStudio 中同时打开模块和主项目。

我在尝试查找此错误的原因时检查了以下内容:

这是错误还是功能?如果是后者,有没有办法禁用它?

这确实是一项功能。您可以在设置 | 下将其关闭版本控制 | Git | [ ] 对所有根执行分支操作(在旧版本中,此选项称为 "Control repositories synchronously")。