为什么 Intellij 在多模块 git 项目中显示 'ghost' 变化?

Why does Intellij show 'ghost' changes in a multi-modular git project?

我正在开发一个多模块项目,每个模块都包含在一个单独的 git 存储库中。

当我在 Intellij 中打开 Commit Changes 对话框时,除了我对 java 文件所做的更改外,我经常看到对其他模块的假定更改,但实际上并没有更改。

在更改树中,在这些未更改的模块下方,将有一个项目仅包含 git 存储库的名称,没有文件扩展名,还有一个问号图标表示 Intellij 没有识别文件类型。

当我单击该项目时,内置差异查看器会显示 fatal: Not a valid object name 后跟 40 个字符的十六进制字符串。

如果我还原该模块上的更改,它将立即重新出现。

发生这种情况是否有原因,会不会造成任何问题?

这看起来与子模块对象非常相似,如果您在子模块中提交了更改,但根 repo 中的引用没有更改,则行为将是这样的。

另一个可能的原因是 git status 输出已修改的文件夹,这可能发生在嵌套存储库未在根存储库中正确忽略的情况下。在这种情况下,请确保根存储库中的 .gitignore 包含嵌套存储库的文件夹。