2011-09-28 55 views
10

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

为了解释我的意思成像以下设置

  • anotherdir/
    • seeme1.iml
  • foldertoignore/
    • ignoreme1.iml
    • SE eme3.txt
    • anotherignorefolder/
      • ignoreme2.iml
      • seeme4.txt
  • seeme5.iml

我希望能够做的是告诉git(使用.gitignore文件)忽略* .iml,但仅在目录foldtertoignore

我想这会工作

foldertoignore/*.iml 

但是只发现ignoreme1.imlignoreme2.iml

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

回答

1

你可以试试这个:

/foldertoignore/**/*.iml 

它可能会或可能不会取决于你的操作系统,我想的fnmatch实施工作。替代方案是:

*.iml 
!/anotherdir/*.iml 
!/*.iml 
+0

利用Windows msysgit, '''**' 似乎并没有被递归应用(如http://stackoverflow.com/questions/971465/git-ignore-certain-files-已经看到contains-in-specific-folders/971523#971523,http://stackoverflow.com/questions/991801/git-ignores-and-maven-targets/991873#991873,并在这里详细解释:http:// stackoverflow。 com/questions/2899875/git-add-not-working-with-png-files/2902126#2902126) – VonC

+0

@Vonc - 我不是说这可能行不通?我不认为OP提到了msysgit? – manojlds

+0

是的,不,你没有;)我的评论绝不是批评,只是一个事实,我已经在Windows上观察msysgit,以及我的方式来将您的答案与其他类似的问题(有关'fnname')进行了讨论。顺便说一句,我并没有降低你的答案(但我已经提高了knittl的,我发现这种情况更适合和强大)。 – VonC

8

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

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

看起来不错。谢谢 – Lango

相关问题