guide

Was ignorieren, was committen?

Kriterien dafür, Build-Artefakte, Abhängigkeiten, Caches und Geheimnisse zu ignorieren, aber Lockfiles, Beispielkonfigurationen und abgestimmte Editoreinstellungen zu committen – dazu .gitignore in Unterverzeichnissen, leere Verzeichnisse und Tipps zum Zusammenführen von Vorlagen.

Eine gute .gitignore bemisst sich nicht an ihrer Länge, sondern an einem Kriterium. Es gibt nur eines: Kann jemand, der das Repository neu klont, allein aus Quellcode und Konfiguration dasselbe Ergebnis erzeugen? Was sich neu erzeugen lässt, wird ignoriert; was sich nicht neu erzeugen lässt oder das Ergebnis festschreibt, wird committet.

Was ignoriert wird

ArtBeispieleGrund
Build-Artefaktedist/, build/, target/, *.o, *.classwerden aus dem Quellcode neu erzeugt
Installierte Abhängigkeitennode_modules/, vendor/ (PHP), .venv/werden über Manifest und Lockfile neu installiert
Caches und Logs.cache/, .pytest_cache/, *.log, coverage/ändern sich bei jeder Ausführung
Lokale Umgebung und Geheimnisse.env, *.pem, local.properties, *.tfstateunterscheiden sich je Person und Umgebung oder dürfen nicht nach außen gelangen
Persönlicher Tool-Zustand.DS_Store, *.swp, .idea/workspace.xmlhaben mit dem Projekt nichts zu tun (globale gitignore empfohlen)

Was committet wird

.gitignore in Unterverzeichnissen

Eine .gitignore muss nicht im Wurzelverzeichnis liegen. Eine .gitignore in einem Unterverzeichnis wirkt relativ zu diesem Verzeichnis und hat Vorrang vor übergeordneten Dateien. Brauchen die Pakete eines Monorepos unterschiedliche Regeln, ist eine eigene Datei im jeweiligen Paketordner leichter zu lesen.

repo/
├── .gitignore          # gemeinsam: .DS_Store, .env, coverage/
├── apps/web/.gitignore # .next/, out/
└── services/api/.gitignore # target/

Leere Verzeichnisse erhalten

git verfolgt nur Dateien und speichert keine leeren Verzeichnisse. Soll wie bei einem Log-Ordner der Ordner existieren, sein Inhalt aber ignoriert werden, legen Sie eine Markierungsdatei hinein und holen sie mit einer Negationsregel zurück.

/log/*
!/log/.keep

Die Namen .keep oder .gitkeep sind keine offizielle git-Funktion, sondern nur eine Konvention. Jeder Name funktioniert. Alternativ können Sie in diesem Ordner eine .gitignore mit folgendem Inhalt ablegen; sie ignoriert alles außer sich selbst.

*
!.gitignore

Beim Zusammenführen von Vorlagen

Regeln kurz und konkret halten

Zu breite Regeln wie *.json verschlucken auch Konfigurationsdateien. Grenzen Sie Pfade so weit wie möglich ein (/dist/) und versehen Sie Verzeichnisse mit einem abschließenden Schrägstrich, um sie von gleichnamigen Dateien zu unterscheiden. Ein einzeiliger Kommentar über der Regel mit dem Grund hilft der nächsten Person zu entscheiden, ob sie gelöscht werden darf.

Quellen

← ZurückWarum wird das ignoriert? Fehlersuche mit git check-ignore