.gitignore: Ignore und exclude patterns korrekt angeben
I wollte git dazu bringen einige Verzeichnisbäume zu ignoren, mit Ausnahme einzelner Unterordner bzw. -dateien. Meine Verzeichnisstruktur sah folgender Maßen aus:
.
└── public
├── index.php
└── typo3conf
├── AdditionalConfiguration.Development.php
├── AdditionalConfiguration.php
├── LocalConfiguration.php
├── PackageStates.php
└── ext
├── typo3_base_setup
└── site_package
Ich wollte, dass git den komplette public Ordner ignoriert, eller nicht die LocalConfiguration.php, AdditionalConfiguration.php und den site_package Ordner. Mein erster Versuch sah so aus:
/public/*
!/public/typo3conf/LocalConfiguration.php
!/public/typo3conf/AdditionalConfiguration.php
!/public/typo3conf/ext/site_package
Aber..., das funkioniert leider nicht. Git ignorierte den kompletten public Zweig. Nachdem ich die gitignore Dokumentation gelesen und ein bisschen herum probiert hatte, kam auf eine Lösung die funktionierte:
/public/*
!/public/typo3conf
/public/typo3conf/*
!/public/typo3conf/LocalConfiguration.php
!/public/typo3conf/AdditionalConfiguration.php
!/public/typo3conf/ext
/public/typo3conf/ext/*
!/public/typo3conf/ext/site_package
Es scheint als müsste man das exclude (un-ignore) Pattern für jede Verzeichnisebene angeben. Ich bin mir nicht sicher ob das ein Bug ist, aber es dauert eine Weile, bis ich das raus hatte.