Ich habe folgende Ordnerstruktur:
%Vor% Ich möchte alles im Verzeichnis media
speichern, außer für catalog/category
und private
Mein Gitignore, das ich versuche, ist:
%Vor% Aber es funktioniert nicht. Alle neuen Dateien, die den Verzeichnissen category
oder private
hinzugefügt wurden, können nicht hinzugefügt werden.
Ich könnte einfach Kraft hinzufügen, aber ich würde das gerne durch den Gitignore tun, wenn möglich
Es ist normalerweise am einfachsten, nur eine .gitignore
auf die Ebene zu setzen, auf die es ankommt. (Dies hilft auch, wenn Sie ein Repository teilen oder Verzeichnisse verschieben). In diesem Fall müssen Sie alles außer catalog
und private
im Ordner public/media
ignorieren, also in public/media/.gitignore
put:
und in public/media/catalog/.gitignore
put:
Es ist wichtig (und der Grund, dass Ihre Regeln nicht funktionieren), das public/media/catalog
-Verzeichnis nicht zu ignorieren, da sonst alles darin ignoriert wird, auch wenn Sie einen bestimmten Teil seines Inhalts nicht ignorieren wollen .
Natürlich können Sie dies auf der Ebene public/media
zu einer einzigen Ignorierung kombinieren, wenn Sie möchten:
Lösung mit einem .gitignore auf Root-Ebene
Sie haben versucht, eine .gitignore
-Datei auf der Root-Ebene des Repositorys zu verwenden. Wie du, zentralisiere ich normalerweise auch alle Ignoranten, um die Dinge sauber zu halten. In diesem Fall ist es jedoch schwierig, weil "es nicht möglich ist, eine Datei wieder aufzunehmen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen ist" [ Quelle ].
Meine hässliche Lösung für diese Einschränkung, die ich auch in meinen diesbezüglichen Antworten hier und hier : Fügen Sie alle übergeordneten Verzeichnisse erneut in den Pfad ein, bevor Sie die gewünschte Datei erneut einfügen, während Sie andere Dateien in diesen übergeordneten Verzeichnissen beibehalten, indem Sie sie erneut ausschließen.
Damit wären Ihre .gitignore
Muster: