Ich habe eine ähnliche Struktur wie die folgende:
/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php
Ich möchte, dass git alle .json
Dateien unter dem Pfad '/ data / ...' ignoriert , aber '/ data /' enthält manchmal Unterverzeichnisse.
Mein Verständnis ist, dass ein einfacher data/*.json
in gitignore nur mit einem Verzeichnis übereinstimmt, da das *
nicht übereinstimmt /
, wie unter http://git-scm.com/docs/gitignore , "Pattern Format", Punkt 6 angegeben:
Andernfalls behandelt git das Muster als Shell-Glob, der für den Verbrauch durch fnmatch (3) mit dem Flag FNM_PATHNAME geeignet ist: Platzhalter im Muster stimmen nicht mit einem / im Pfadnamen überein. Beispielsweise stimmt "Documentation / *. Html" mit "Documentation / git.html" überein, nicht jedoch mit "Documentation / ppc / ppc.html" oder "tools / perf / Documentation / perf.html".
Gibt es eine einfache Möglichkeit, dies zu tun, oder muss ich Gitignore-Dateien in jedem Unterverzeichnis explizit aktiv hinzufügen?
Antworten:
Ich habe kürzlich einen Beitrag über ein solches Problem geschrieben. Siehe hier .
Grundsätzlich müssen Sie eine
.gitignore
mit*.json
in das/data/
Verzeichnis setzen.UPD : Seit Git 1.8.4 ( 1.8.2, wenn Sie msysgit verwenden) ist es möglich, Doppelsternmuster wie zu verwenden
/data/**/*.json
quelle
.gitignore
Datei hinzugefügt , die enthält*.json
, aber wenn ich eine dieser Dateien ändere und ausführegit status
, werden sie als "Änderungen nicht bereitgestellt" aufgeführt. Müssen.gitignore
Dateien festgeschrieben werden, bevor sie wirksam werden? Wird dies angezeigt, weil die Dateien zuvor verfolgt wurden?.gitignore
Sie können
data/**/*.json
in Ihr.gitignore
In-/root
Verzeichnis legen , um zu verhindern, dass mehrere.gitignore
Dateien in verschiedenen Verzeichnissen gespeichert werden**/
- Entspricht einer beliebigen Anzahl von Unterverzeichnissen (einschließlich der aktuellen)Beispiel:
data/**/*.json
Datensatz wird ignoriertdata/1.json
,data/subfolder/2.json
,data/../../3.json
quelle
/bla/data/**/*.json
und/bla/bla/data/**/*.json
./data/**/*.json
sollte benutzt werden.Dieses Muster funktioniert für mich für Datenunterordner, wobei nur PNG- und JPG-Dateien ignoriert werden:
quelle