Git alle Dateien eines bestimmten Typs außer in allen Unterverzeichnissen eines bestimmten Verzeichnisses ignorieren?

Lesezeit: 2 Minuten

Ich versuche, eine Gitignore-Datei zu erstellen, die alle .jar-Dateien ignoriert, es sei denn, sie befinden sich in einem Ordner namens libs. Hier ist meine grundlegende Dateistruktur:

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

Derzeit in .gitignore habe ich versucht:

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

Entweder einzeln, in Kombination oder sogar alle zusammen. Keiner von ihnen funktioniert. Die einzige Möglichkeit, die ich gefunden habe, besteht darin, entweder eine andere .gitignore-Datei einzufügen libs/ (was ich lieber vermeiden würde) oder a verwenden !libs/*/*/*.jar Zeile für jede mögliche Ebene von Unterverzeichnissen. Gibt es eine Möglichkeit, alle Gläser außer denen in libs zu ignorieren?

Benutzeravatar von peshkira
Peschkira

Wie wäre es mit:

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

Die Reihenfolge ist wichtig.

Bearbeiten
Ich habe Ihre Projektstruktur verwendet und habe die folgende Ausgabe, nachdem ich a git add und git 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

  • Ich habe das versucht, aber es ignoriert immer noch alle .jars, die nicht direkt in libs/ sind und sich stattdessen in Unterordnern befinden.

    – CSturm

    20. März 2014 um 15:31 Uhr

  • Bist du dir sicher. Ich habe es gerade mit deiner vorgeschlagenen Struktur ausprobiert und es funktioniert perfekt

    – Peschkira

    20. März 2014 um 15:32 Uhr


  • Okay, es wird es abholen, wenn es ein Unterverzeichnis tiefer ist, aber die meisten der Gläser, die ich einschließen muss, sind 4 oder 5 Ebenen tief. Die werden nicht abgeholt.

    – CSturm

    20. März 2014 um 15:34 Uhr

  • Überprüfen Sie auch Ihre .git/info/exclude Datei für mögliche versteckte Ausschlüsse.

    – Boris Brodsky

    20. März 2014 um 15:42 Uhr


  • Das hat funktioniert. Es stellte sich heraus, dass das Problem meine Git-Version war. Ich habe 1.7 ausgeführt und die Unterstützung für “**” wurde erst in 1.8 hinzugefügt.

    – CSturm

    21. März 2014 um 19:13 Uhr

1429600cookie-checkGit alle Dateien eines bestimmten Typs außer in allen Unterverzeichnissen eines bestimmten Verzeichnisses ignorieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy