So richten Sie .gitignore als Whitelist ein

0
78

Die .gitignore-Datei ist ein wichtiger Bestandteil jedes Git-Repositorys; Es verhindert, dass unerwünschte Dateien in der Quellcodeverwaltung verfolgt und freigegeben werden. Normalerweise möchten Sie bestimmte Dateien und Ordner ignorieren, aber manchmal ist es einfacher, es umgekehrt zu tun.

Verwenden von .gitignore als eine Whitelist

Die reguläre Verwendung von .gitignore ist einfach—geben Sie einen Dateinamen oder einen passenden Platzhalter, und diese Datei wird blockiert. Wenn Sie es jedoch als Whitelist verwenden, wird es etwas komplizierter.

Zuerst benötigen Sie die beiden folgenden Anweisungen am Anfang der Datei, die standardmäßig alles mit einem allumfassenden Platzhalter blockieren *:

* !*/

Die zweite Zeile wird wegen der Whitelisting-Funktion benötigt ist nicht so einfach wie das Blockieren. Aufgrund der Art und Weise, wie Git mit diesen Dateien umgeht, versucht es nicht einmal, etwas im Verzeichnis zu überprüfen, um festzustellen, ob es später entsperrt wurde, wenn es feststellt, dass ein Verzeichnis blockiert ist. Es überspringt es einfach und ignoriert alle Regeln in diesem Verzeichnis.

Die zweite Zeile hier weist Git also an, speziell Unterordner zu überprüfen. Das Ausrufezeichen! wird verwendet, um die Regel in eine Whitelist umzuwandeln. Es stimmt mit allen Verzeichnissen überein, aber da es mit nichts in diesen Verzeichnissen übereinstimmt, verfolgt Git noch keine Dateien mit nur diesen beiden Zeilen allein.

Dies ermöglicht Setups wie die folgenden:

* !*/# diese Datei verfolgen !.gitignore # alles in ./config/auf die weiße Liste setzen !config/Werbung

Die .gitignore Datei selbst befindet sich im Hauptverzeichnis, kann also normal auf die weiße Liste gesetzt werden. Das Whitelisting von Verzeichnissen erfordert lediglich einen nachgestellten Schrägstrich, und Git kehrt in diesem Verzeichnis zum Normalzustand zurück und überschreibt den vorherigen, alles blockierenden Platzhalter.

Wenn Sie ein Verzeichnis und seinen gesamten Inhalt explizit auf die Whitelist setzen möchten, müssen Sie die doppelter Platzhalter, !config/**. Ein einzelner Platzhalter würde sich nicht rekursiv in Unterverzeichnisse ausbreiten. Dadurch werden alle anderen Blockierungsregeln außer Kraft gesetzt.

Debugging von .gitignore

Wenn Sie Probleme mit Ihrer Konfiguration haben, können Sie kann es mit dem Git-Befehl check-ignore debuggen:

git check-ignore -v testfile.json