除了某个目录的所有子目录外,Git会忽略某种类型的所有文件吗?

时间:2014-03-20 15:22:36

标签: git gitignore

我试图创建一个忽略所有.jar文件的gitignore文件,除非它们位于名为libs的文件夹中。这是我的基本文件结构:

-.gitignore 
-libs/
    -goodFile.jar
    -someFolder/
        -subFolder/
            -alsoGood.jar
-otherCode/
    -fileToExclude.jar
-otherOtherCode/
    -otherSubfolder/
        -alsoExclude.jar

目前在.gitignore我尝试过:

*.jar
!libs
!libs/
!libs/*
!libs/**
!libs/**/
!libs/**/*.jar
!libs/*.jar

自己,组合,甚至全部。他们都没有工作。我发现这样做的唯一方法是将另一个.gitignore文件放入libs/(我希望避免使用)或者为每个可能级别的子目录使用!libs/*/*/*.jar行。有没有办法让它忽略除libs中的所有罐子?

1 个答案:

答案 0 :(得分:22)

怎么样:

*.jar
!libs/**/*.jar

订单很重要。

修改 我使用了您的项目结构,并在完成git addgit status

之后输出了以下内容
$ git stat
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   .gitignore
    new file:   libs/goodFile.jar
    new file:   libs/someFolder/subFolder/alsoGood.jar
    new file:   libs/someFolder/subFolder/test/anotherFolder/test.jar



$ cat .gitignore 
*.jar
!libs/**/*.jar