Ich habe ähnliche Fragen gesehen ( 1 , 2 und 3 ), aber ich bekomme keine richtige Lösung von ihnen.
Ich muss alle Dateien unter einem bestimmten Ordner außer einem bestimmten Dateityp ignorieren. Der Ordner ist ein Unterverzeichnis für den Stammpfad. Lassen Sie mich den Ordner benennen Resources
. Da ich die Dinge nicht komplizieren möchte, möchte ich Dateien unter allen Ordnern ignorieren, die Resources
überall benannt sind.
Dies ist die häufigste Lösung (bei allen doppelten Fragen).
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
Das Problem bei dieser Lösung besteht darin, dass neu hinzugefügte Dateien nicht mehr verfolgt werden (da *
alle Dateien ignoriert werden). Ich möchte nicht jeden Dateityp ausschließen. Ich möchte ein normales Verhalten, bei dem eine neue Datei angezeigt wird git status
.
Ich habe hier endlich eine Lösung gefunden . Die Lösung besteht darin, eine weitere .gitignore
Datei im Resources
Ordner hinzuzufügen . Das funktioniert richtig.
Kann ich dasselbe mit einer Ignorierdatei erreichen? Ich finde es etwas klobig, viele Ignorierdateien in verschiedenen Verzeichnissen zu haben.
Das versuche ich zu erreichen:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Dies ergibt jedoch die entgegengesetzte Ausgabe. Es ignoriert *.foo
Typen und verfolgt andere Dateien.
DirectoryName1/** DirectoryName1/**/*
für jedes von ihnen. Firs entfernen Verzeichnisse, aber Sie benötigen das zweite, um alle Dateitypen zu entfernen.Die beste Antwort ist das Hinzufügen einer Resources / .gitignore-Datei unter Resources, die Folgendes enthält:
Wenn Sie diese Gitignore-Datei nicht hinzufügen möchten oder können, gibt es eine unelegante Lösung:
Sie müssen dieses Muster bearbeiten, wenn Sie Verzeichnisse hinzufügen, die tiefer als angegeben sind.
quelle
Dies mag dumm aussehen, aber prüfen Sie, ob Sie den Ordner / die Dateien, die Sie ignorieren möchten, noch nicht zum Index hinzugefügt haben. Wenn Sie dies getan haben, spielt es keine Rolle, was Sie in Ihre .gitignore-Datei einfügen. Die Ordner / Dateien werden weiterhin bereitgestellt.
quelle
git rm --cached <path to files>
diese ignorierten Dateien aus git löschen, während Sie sie weiterhin im Dateisystem belassen.Entweder mache ich es falsch oder die akzeptierte Antwort funktioniert mit dem aktuellen Git nicht mehr.
Ich habe gefunden , tatsächlich die richtige Lösung und entsandte sie unter fast der gleichen Frage hier . Weitere Details finden Sie dort.
Lösung:
quelle
!/Resources/**/
war entscheidend, damit git Unterverzeichnisse nicht ignoriert.