**/<pattern> 忽略 <pattern> 的所有文件,两个目录除外

**/<pattern> ignoring all files of <pattern> except in two directories

我有一个只有 **/*.pyc 模式的 .gitignore 文件,它忽略除两个目录中的所有 .pyc 文件。它适用于具有更长和更短名称的其他目录。当我将 one 的名称更改为 "Axiom_Blob" 之类的名称时,它就起作用了。 git 中没有这些名字的原因是什么?我使用的是 1.9.5 版本。

 modified:   Axiom_AIR_25_49_61/Axiom_AIR_25_49_61.pyc
 modified:   Axiom_AIR_25_49_61/__init__.pyc
 modified:   Axiom_AIR_Mini32/AxiomAirMini32.pyc
 modified:   Axiom_AIR_Mini32/__init__.pyc

从您的示例中可以清楚地看出答案。您列出的所有文件都以单词 modified: 开头。这意味着这些文件已经提交给 Git,因此 .gitignore 没有影响。 .gitignore 仅适用于未跟踪的文件。

如果无法删除它们,请使用

git update-index --assume-unchanged <your-files>

一个更好的解决方案是从历史记录中清除这些文件,假设它们从一开始就不应该被提交。这可以通过 BFG Repo Cleaner

轻松完成