Ich kann mir mindestens zwei Situationen vorstellen, in denen Sie mehrere .gitignore
Dateien in verschiedenen (Unter-) Verzeichnissen haben möchten .
Unterschiedliche Verzeichnisse haben unterschiedliche Dateitypen, die ignoriert werden müssen. Beispielsweise .gitignore
ignoriert das Verzeichnis im obersten Verzeichnis Ihres Projekts generierte Programme, während Documentation/.gitignore
die generierte Dokumentation ignoriert wird.
Ignorieren angegebenen Dateien nur in bestimmten (Unter-) Verzeichnis (Sie verwenden können , /sub/foo
in .gitignore
, obwohl).
Bitte denken Sie daran, dass Muster in der .gitignore
Datei rekursiv auf das (Unter-) Verzeichnis angewendet werden, in dem sich die Datei befindet, und auf alle ihre Unterverzeichnisse, es sei denn, das Muster enthält '/' (z. B. name
gilt das Muster für alle name
in einem bestimmten Verzeichnis und allen Unterverzeichnissen genannten /name
Dateien , während es für die Datei gilt mit diesem Namen nur im angegebenen Verzeichnis).
Documentation/**/*.html
(beachten Sie, dass jeder Schrägstrich das Muster verankert; der/foo
wird verwendet, um die Datei direkt im Verzeichnis zu verankern)Als tangentiale Anmerkung ist ein Fall, in dem die Möglichkeit, mehrere
.gitignore
Dateien zu haben, sehr nützlich ist, wenn Sie ein zusätzliches Verzeichnis in Ihrer Arbeitskopie wünschen, das Sie niemals festschreiben möchten. Fügen Sie einfach ein 1-Byte.gitignore
(das nur ein einzelnes Sternchen enthält) in dieses Verzeichnis ein und es wird niemals ingit status
usw. angezeigt.quelle
printf \* > .gitignore
(die Bereinigung erfolgt automatisch, wenn Sie das Verzeichnis löschen). Ich bin sicher, dass es Situationen gibt, in denen.git/info/exclude
die Wahl besser ist, aber nicht viele.Sie können mehrere haben
.gitignore
, jeder natürlich in einem eigenen Verzeichnis.Um herauszufinden , welche gitignore Regel verantwortlich ist eine Datei, die Verwendung zu ignorieren
git check-ignore
:git check-ignore -v -- afile
.Und Sie können eine andere Version einer
.gitignore
Datei pro Zweig haben: Ich habe diese Art von Konfiguration bereits gesehen, um sicherzustellen, dass ein Zweig eine Datei ignoriert, während der andere Zweig dies nicht tut: siehe diese Frage zum Beispiel .Wenn Ihr Repo mehrere unabhängige Projekte enthält, ist es jedoch am besten, diese als Submodule zu bezeichnen .
Dies wären die tatsächlichen Best Practices, mit denen jedes dieser Projekte unabhängig (mit den jeweiligen
.gitignore
Dateien) geklont werden kann, während auf eine bestimmte Revision in einem globalen übergeordneten Projekt verwiesen wird.Weitere Informationen finden Sie unter Die wahre Natur von Submodulen .
Beachten Sie, dass Sie seit Git 1.8.2 (März 2013) a
git check-ignore -v -- yourfile
ausführen können, um zu sehen, welcher Gitignore-Lauf (von welcher.gitignore
Datei) auf 'yourfile
' angewendet wird , und um besser zu verstehen, warum diese Datei ignoriert wird.Siehe " Welche
gitignore
Regel ignoriert meine Datei? "quelle
Pro Single
Einfach zu finden.
Das Aufspüren von Ausschlussregeln kann ziemlich schwierig sein, wenn ich mehrere Gitignore auf mehreren Ebenen im Repo habe.
Bei mehreren Dateien kommt es in der Regel auch zu einer gewissen Duplizierung.
Pro mehrere
Umfang "Wissen" auf den Teil des Dateibaums, in dem es benötigt wird.
Da Git nur Dateien verfolgt, ist ein leerer Gitignore die einzige Möglichkeit, ein "leeres" Verzeichnis festzuschreiben.
(Und vor Git 1.8 war die einzige Möglichkeit, ein Muster wie dieses auszuschließen
my/**.example
, das Erstellenmy/.gitignore
mit dem Muster**.foo
. Dieser Grund gilt jetzt nicht mehr, wie Sie es tun können/my/**/*.example
.)Ich bevorzuge eine einzelne Datei, in der ich alle Ausschlüsse finden kann. Ich habe noch nie .svn pro Verzeichnis verpasst, und ich werde auch .gitignore pro Verzeichnis nicht verpassen.
Das heißt, mehrere Gitignoren sind ziemlich häufig. Wenn Sie sie verwenden, sollten Sie sie zumindest konsequent verwenden, damit sie angemessen funktionieren. Sie können sie beispielsweise nur eine Ebene vom Stamm entfernt in Verzeichnisse einfügen.
quelle
empty
) häufiger vorkommt.Es gibt viele Szenarien , in denen Sie ein Verzeichnis Ihrer Git Repo begehen wollen , aber ohne die Dateien darin, zum Beispiel der
logs
,cache
,uploads
Verzeichnisse usw.Ich füge also immer eine
.gitignore
Datei in diesen Verzeichnissen mit folgendem Inhalt hinzu:Mit dieser
.gitignore
Datei verfolgt Git keine Dateien in diesen Verzeichnissen, ermöglicht mir jedoch, die.gitignore
Datei und damit das Verzeichnis selbst zum Repo hinzuzufügen .quelle