Git 文件夹内的子模块包含要忽略的文件夹和文件

Git Submodule inside a folder with folders and files to be ignored

我遇到过 git 子模块位于包含其他要忽略的文件夹的文件夹中的情况。结构如下:

lib/
  submodule-folder/
  other-folder/       # This is folder should be ignored

我的问题是,我可以只将 lib/ 添加到 .gitignore 以实现 other-folder 在子模块仍正常工作时被忽略的目标吗?或者我应该排除 .gitignore 中的子模块模式,例如

lib/*
!lib/submodule-folder/

我已经尝试了第一种方法,当使用像 git submodule update 这样的命令时,子模块似乎运行良好,但仍然不确定这是否正确,因为我找不到解释它的参考资料。有人 运行 遇到过这样的情况吗?

如果子模块已经被跟踪(意味着它的根文件夹 lib/submodule-folder/ 已经作为 a gitlink 的 Git 历史记录的一部分),那么是的,您可以将 lib/ 添加到 .gitignore.

这将忽略 else lib/ 文件夹中的所有内容。

要仔细检查子模块文件夹 是否被任何 .gitignore 规则忽略,请检查以下命令 return 什么都不做:

git check-ignore -v -- lib/submodule-folder

(本例中没有尾部斜线)