Skip to main content

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:

  1. Abhängigkeiten und generierte Dateien

    Ordner wie vendor/ (Composer) oder node_modules/ (npm) können tausende Dateien enthalten und viele hundert Megabyte groß werden. Diese Dateien werden durch composer install bzw. npm install automatisch 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.

  2. Sensible Daten

    Dateien wie .env enthalten 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.

  3. IDE- und systemspezifische Dateien

    PhpStorm speichert Projekteinstellungen im Ordner .idea/. Dein Betriebssystem legt möglicherweise Dateien wie .DS_Store (macOS) oder Thumbs.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.

  4. 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?

  1. Rechtsklick auf das Projektstammverzeichnis im Projektbaum (links in PhpStorm).
  2. Wähle New → File und gib als Namen .gitignore ein.
  3. Füge die gewünschten Einträge ein und speichere die Datei.
  4. 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 .gitignore hinzufügst, wird Git sie trotzdem weiter tracken. Du musst sie erst aus dem Index entfernen:

git rm --cached dateiname

Das 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. 😊