Die .gitignore-Datei – was sie ist und warum du sie brauchst 🚫
Wenn du mit Git arbeitest, möchtest du nicht jede Datei in deinem Projektordner auch tatsächlich versionieren. Manche Dateien sind temporär, automatisch generiert oder enthalten sensible Informationen – sie gehören schlicht nicht ins Repository. Genau hier kommt die .gitignore-Datei ins Spiel.
Was ist die .gitignore-Datei?
Die .gitignore ist eine einfache Textdatei im Hauptverzeichnis deines Git-Repositories. Sie enthält eine Liste von Dateinamen, Ordnern oder Mustern, die Git ignorieren soll. Das bedeutet: Dateien, die auf diese Muster passen, werden von Git nicht getrackt – sie tauchen nicht in der Staging Area auf, werden nicht committet und landen somit auch nicht auf GitHub oder in deiner Versionshistorie.
💡 Die Datei heißt wirklich
.gitignore(mit Punkt am Anfang, ohne Dateiendung). Unter Windows kann das Erstellen einer solchen Datei manchmal etwas umständlich sein – in PhpStorm kannst du sie aber problemlos über Rechtsklick → New → File anlegen.
Warum ist das wichtig?
Es gibt mehrere gute Gründe, bestimmte Dateien nicht ins Repository aufzunehmen:
-
Abhängigkeiten und generierte Dateien
Ordner wie
vendor/(Composer) odernode_modules/(npm) können tausende Dateien enthalten und viele hundert Megabyte groß werden. Diese Dateien werden durchcomposer installbzw.npm installautomatisch aus den Paketquellen heruntergeladen – sie müssen also nicht versioniert werden. Die Konfigurationsdateien (composer.json,package.json) reichen völlig aus, um die Abhängigkeiten jederzeit wiederherzustellen. -
Sensible Daten
Dateien wie
.enventhalten oft Passwörter, API-Schlüssel oder Datenbank-Zugangsdaten. Wenn du diese ins Repository eincheckst und auf GitHub pushst, sind sie unter Umständen öffentlich sichtbar – ein erhebliches Sicherheitsrisiko. -
IDE- und systemspezifische Dateien
PhpStorm speichert Projekteinstellungen im Ordner
.idea/. Dein Betriebssystem legt möglicherweise Dateien wie.DS_Store(macOS) oderThumbs.db(Windows) an. Diese Dateien sind nur für dich lokal relevant und würden bei anderen Teammitgliedern im besten Fall nur stören – im schlimmsten Fall Konflikte verursachen. -
Temporäre und Cache-Dateien
Logs, Caches und temporäre Dateien ändern sich ständig und haben keinen Mehrwert in der Versionshistorie. Sie würden nur die Historie „verschmutzen" und das Repository unnötig aufblähen.
Beispiel-.gitignore für ein PHP-Projekt
Hier ist eine praxisnahe .gitignore-Datei, wie du sie für ein typisches PHP-Projekt mit Composer und eventuell Node.js-basierten Build-Tools (z. B. für Frontend-Assets) verwenden könntest:
# ===========================================
# Abhängigkeiten (werden über Paketmanager installiert)
# ===========================================
# Composer-Abhängigkeiten
/vendor/
# Node.js-Abhängigkeiten (falls du npm/Yarn für Frontend-Tools nutzt)
/node_modules/
# ===========================================
# Umgebungs- und Konfigurationsdateien mit sensiblen Daten
# ===========================================
# Umgebungsvariablen (Passwörter, API-Keys, DB-Zugangsdaten)
.env
.env.local
.env.*.local
# ===========================================
# IDE- und Editor-Einstellungen
# ===========================================
# PhpStorm / JetBrains IDEs
/.idea/
# Visual Studio Code
/.vscode/
# ===========================================
# Betriebssystem-spezifische Dateien
# ===========================================
# macOS
.DS_Store
# Windows
Thumbs.db
Desktop.ini
# ===========================================
# Logs, Caches und temporäre Dateien
# ===========================================
# Allgemeine Log-Dateien
*.log
# Composer-Cache (normalerweise global, aber sicherheitshalber)
/composer.phar
# PHP-Cache-Dateien (z. B. von Frameworks wie Laravel oder Symfony)
/storage/logs/
/storage/framework/cache/
/storage/framework/sessions/
/storage/framework/views/
/bootstrap/cache/
# Build-Artefakte (falls du Frontend-Assets kompilierst)
/public/build/
/public/hot
/public/mix-manifest.json
# ===========================================
# Tests und Coverage-Reports
# ===========================================
# PHPUnit Coverage-Reports
/coverage/
.phpunit.result.cache
Erklärung der wichtigsten Einträge
| Eintrag | Bedeutung |
|---|---|
/vendor/ |
Schließt den kompletten Composer-Abhängigkeitsordner aus. Der führende Slash / bedeutet: nur im Hauptverzeichnis. |
/node_modules/ |
Dasselbe für npm/Yarn-Pakete. Kann bei Frontend-Projekten leicht mehrere zehntausend Dateien enthalten. |
.env |
Umgebungsdatei mit sensiblen Konfigurationswerten – niemals ins Repository! |
/.idea/ |
PhpStorm speichert hier Projekteinstellungen, die nur lokal relevant sind. |
.DS_Store |
Versteckte macOS-Systemdatei, die Finder-Einstellungen speichert. |
*.log |
Alle Dateien mit der Endung .log – also sämtliche Log-Dateien im gesamten Projekt. |
/storage/ und /bootstrap/cache/ |
Typische Cache-Verzeichnisse bei Laravel-Projekten. |
Wie lege ich die Datei in PhpStorm an?
- Rechtsklick auf das Projektstammverzeichnis im Projektbaum (links in PhpStorm).
- Wähle New → File und gib als Namen
.gitignoreein. - Füge die gewünschten Einträge ein und speichere die Datei.
- Committe die
.gitignore-Datei selbst – sie gehört ins Repository, damit alle Teammitglieder (oder du selbst auf anderen Rechnern) dieselben Regeln haben.
⚠️ Wichtig: Wenn du eine Datei bereits committet hast und sie danach zur
.gitignorehinzufügst, wird Git sie trotzdem weiter tracken. Du musst sie erst aus dem Index entfernen:git rm --cached dateinameDas entfernt die Datei aus dem Repository, lässt sie aber lokal auf deiner Festplatte bestehen.
Fazit ✅
Die .gitignore-Datei ist ein unverzichtbares Werkzeug für saubere Git-Repositories. Sie sorgt dafür, dass nur relevanter Code und Konfiguration versioniert wird – ohne unnötigen Ballast, ohne Sicherheitsrisiken und ohne Konflikte durch nutzerspezifische Dateien. Nimm dir zu Beginn jedes Projekts kurz Zeit, eine sinnvolle .gitignore anzulegen – dein zukünftiges Ich wird es dir danken. 😊