如何忽略特定目录中的特定文件类型及其在Git中的子目录?

如何忽略特定目录中的特定文件类型及其在Git中的子目录?,git,Git,如何仅在一个目录及其子目录中忽略某个文件类型? 为了解释我的意思,请执行以下设置 另一个/ 见ME1.iml 折页/ ignoreme1.iml 请参阅me3.txt 再造林/ ignoreme2.iml 请参阅me4.txt 见5.iml 我希望能够做到的是告诉git(使用.gitignore文件)忽略*.iml,但只在foldtertoignore目录下 我想这会管用的 foldertoignore/*.iml 但那只找到了ignoreme1.iml而不是ignoreme2

如何仅在一个目录及其子目录中忽略某个文件类型?

为了解释我的意思,请执行以下设置

  • 另一个/
    • 见ME1.iml
  • 折页/
    • ignoreme1.iml
    • 请参阅me3.txt
    • 再造林/
      • ignoreme2.iml
      • 请参阅me4.txt
  • 见5.iml
我希望能够做到的是告诉git(使用.gitignore文件)忽略*.iml,但只在foldtertoignore目录下

我想这会管用的

foldertoignore/*.iml
但那只找到了ignoreme1.iml而不是ignoreme2.iml

我知道如何告诉它忽略*.iml,除了一个特定的目录。这是相反的。有什么想法吗?

你可以试试这个:

/foldertoignore/**/*.iml
我想,它可能工作,也可能不工作,这取决于操作系统中的fnmatch实现。备选方案是:

*.iml
!/anotherdir/*.iml
!/*.iml

.gitignore
规则从包含目录递归应用。只需创建文件
foldertoignore/.gitignore
,并将
*.iml
作为内容

>>foldertoignore/.gitignore echo '*.iml'
git add foldertoignore/.gitignore
git commit -m 'Ignore .iml files in foldertoignore and its subfolders'

在Windows上使用msysgit,“
**
”似乎不会递归应用(如中所示,并在此处详细解释:)@Vonc-我不是说过这可能不起作用吗?我想OP没有提到msysgit?是的,你没有;)我的评论绝不是批评,只是我在使用msysgit的Windows上观察到的一个事实,也是我将您的答案与讨论过类似问题(与
fnname
相关)的其他人联系起来的一种方式。顺便说一句,我没有否决你的答案(但我已经否决了knittl的答案,我觉得这更适合这种情况)。@Vonc-是的,knittl的答案是恰当的,但我喜欢从回购协议的根本上管理一个gitignore。因此,如果
**
对OP有效,我会说去吧。否则,请接受knittl的回答“我喜欢从回购协议的根本上管理一个gitignore”:我完全同意。但不幸的是,我从未在Windows上做到这一点。如果OP不在Windows上,他/她应该知道选择什么答案;)