.gitignore & Best Practices
Lerne, wie du mit .gitignore Dateien aus der Versionskontrolle ausschließt und dein Repository sauber hältst.
Nicht alle Dateien in deinem Projektordner gehoeren ins Git-Repository. Passwort-Dateien, Log-Files, Build-Ordner und System-Dateien sollten ausgeschlossen werden. Die .gitignore-Datei sagt Git, welche Dateien es ignorieren soll.
Warum .gitignore?
In jedem Projekt gibt es Dateien, die nicht ins Repository gehoeren:
| Kategorie | Beispiele | Warum ignorieren? |
|---|---|---|
| Abhaengigkeiten | node_modules/, venv/ | Zu gross, werden automatisch installiert |
| Build-Dateien | dist/, build/ | Werden aus dem Quellcode generiert |
| Umgebungsvariablen | .env, secrets.json | Enthalten Passwoerter und API-Keys |
| System-Dateien | .DS_Store, Thumbs.db | Betriebssystem-spezifisch |
| Editor-Dateien | .vscode/settings.json | Persoenliche Einstellungen |
| Logs | *.log, logs/ | Temporaere Dateien |
Was passiert ohne .gitignore?
git status
Untracked files:
.DS_Store
.env
node_modules/
node_modules/express/
node_modules/express/lib/
... (10.000+ Dateien!)
Eine .gitignore erstellen
Erstelle eine Datei namens .gitignore im Hauptverzeichnis deines Projekts:
touch .gitignore
Grundlegende Syntax
# Das ist ein Kommentar
# Einzelne Datei ignorieren
geheim.txt
# Alle Dateien mit einer Endung ignorieren
*.log
*.tmp
# Einen Ordner ignorieren
node_modules/
dist/
build/
# Alles in einem Ordner ignorieren
logs/
# Ausnahme: Diese Datei trotzdem tracken
!wichtig.log
# Datei in jedem Unterordner ignorieren
**/debug.log
# Datei nur im Hauptverzeichnis ignorieren
/config.local.json
Pattern-Referenz
| Pattern | Beschreibung | Beispiel |
|---|---|---|
datei.txt | Exakte Datei (ueberall) | datei.txt |
*.log | Alle .log-Dateien | error.log, debug.log |
ordner/ | Gesamter Ordner | node_modules/ |
!datei | Ausnahme (nicht ignorieren) | !README.md |
**/name | In jedem Verzeichnis | **/temp/ |
/*.txt | Nur im Hauptverzeichnis | /notes.txt |
doc/**/*.pdf | PDFs in doc und Unterordnern | doc/spec/v1.pdf |
.gitignore fuer verschiedene Projekte
Webprojekt (HTML/CSS/JS)
# Abhaengigkeiten
node_modules/
# Build-Ausgabe
dist/
build/
.cache/
# Umgebungsvariablen
.env
.env.local
.env.production
# System-Dateien
.DS_Store
Thumbs.db
# Editor
.vscode/
.idea/
*.swp
*.swo
# Logs
*.log
npm-debug.log*
# Temporaere Dateien
*.tmp
*.temp
Python-Projekt
# Virtuelle Umgebung
venv/
.venv/
env/
# Bytecode
__pycache__/
*.py[cod]
*.pyo
# Distribution
dist/
build/
*.egg-info/
# Umgebungsvariablen
.env
# IDE
.vscode/
.idea/
# Jupyter
.ipynb_checkpoints/
React/Next.js Projekt
# Abhaengigkeiten
node_modules/
.pnp/
.pnp.js
# Build
.next/
out/
build/
dist/
# Testing
coverage/
# Umgebungsvariablen
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# System
.DS_Store
*.pem
gitignore.io - Vorlagen generieren
Statt die .gitignore von Hand zu schreiben, kannst du Vorlagen generieren:
# Vorlage fuer Node.js herunterladen
curl -sL https://www.toptal.com/developers/gitignore/api/node > .gitignore
Oder besuche gitignore.io und waehle deine Technologien aus.
Bereits getrackte Dateien ignorieren
Wichtig: Die .gitignore wirkt nur auf Dateien, die noch nicht getrackt werden! Wenn du eine Datei bereits committed hast, musst du sie zuerst aus dem Tracking entfernen:
# Datei aus dem Tracking entfernen (bleibt auf der Festplatte)
git rm --cached .env
# Ordner aus dem Tracking entfernen
git rm -r --cached node_modules/
# Committen
git commit -m "chore: Sensible Dateien aus Tracking entfernt"
Dann fuege die Datei zur .gitignore hinzu:
.env
node_modules/
git add .gitignore
git commit -m "chore: .gitignore aktualisiert"
Globale .gitignore
Du kannst eine globale .gitignore erstellen, die fuer alle deine Projekte gilt. Perfekt fuer System- und Editor-Dateien:
# Globale .gitignore erstellen
touch ~/.gitignore_global
# Git konfigurieren
git config --global core.excludesFile ~/.gitignore_global
Inhalt der globalen .gitignore_global:
# macOS
.DS_Store
.AppleDouble
.LSOverride
# Windows
Thumbs.db
ehthumbs.db
Desktop.ini
# Linux
*~
# Editor
.vscode/
.idea/
*.swp
*.swo
*.sublime-project
*.sublime-workspace
# Temporaere Dateien
*.tmp
*.bak
*.orig
.gitignore ueberpruefen
Warum wird meine Datei nicht ignoriert?
# Pruefen, ob eine Datei ignoriert wird
git check-ignore -v datei.txt
.gitignore:3:*.txt datei.txt
Das zeigt dir, welche Regel in welcher Datei die Ignorierung verursacht.
Alle ignorierten Dateien anzeigen
git status --ignored
Pruefen, ob eine Regel greift
git check-ignore node_modules/
node_modules/
Wenn keine Ausgabe kommt, wird die Datei nicht ignoriert.
Verschachtelte .gitignore-Dateien
Du kannst in Unterordnern eigene .gitignore-Dateien haben:
projekt/
├── .gitignore # Hauptregeln
├── src/
│ └── .gitignore # Regeln nur fuer src/
└── docs/
└── .gitignore # Regeln nur fuer docs/
Regeln in Unterordnern gelten nur fuer diesen Ordner und seine Unterordner.
Haeufige Fehler
Fehler 1: .env committed
Wenn du versehentlich eine .env-Datei committed hast:
# Aus dem Tracking entfernen
git rm --cached .env
echo ".env" >> .gitignore
git add .gitignore
git commit -m "fix: .env aus Tracking entfernt und zu gitignore hinzugefuegt"
Wichtig: Wenn die .env-Datei einmal gepusht wurde, aendere ALLE darin enthaltenen Passwoerter und API-Keys! Die alte Version ist in der Git-Historie und potenziell zugaenglich.
Fehler 2: node_modules committed
git rm -r --cached node_modules
git commit -m "chore: node_modules aus Tracking entfernt"
Fehler 3: .gitignore vergessen
Erstelle die .gitignore als allererstes in einem neuen Projekt, noch vor dem ersten Commit!
Uebungen
- Erstelle ein Projekt mit einer passenden .gitignore
- Erstelle eine .env-Datei und stelle sicher, dass sie ignoriert wird
- Pruefe mit
git check-ignore, ob Regeln funktionieren - Richte eine globale .gitignore fuer dein System ein
- Entferne eine bereits getrackte Datei mit
git rm --cached
Was kommt als Naechstes?
In den naechsten Kapiteln setzt du alles Gelernte in die Praxis um! Du wirst einen kompletten Team-Workflow aufbauen und ein GitHub-Portfolio erstellen.
Zusammenfassung
- Die
.gitignoresagt Git, welche Dateien es ignorieren soll - Ignoriere Abhaengigkeiten, Build-Dateien, Umgebungsvariablen und System-Dateien
- Die .gitignore wirkt nur auf noch nicht getrackte Dateien
git rm --cachedentfernt Dateien aus dem Tracking, behaelt sie aber lokal- Eine globale .gitignore gilt fuer alle deine Projekte
- Nutze gitignore.io fuer vorgefertigte Vorlagen
- Erstelle die .gitignore immer als Erstes in einem neuen Projekt
Pro-Tipp: Committe niemals sensible Daten wie Passwoerter, API-Keys oder Tokens! Auch wenn du sie spaeter wieder entfernst, bleiben sie in der Git-Historie. Richte die .gitignore als allerersten Schritt in jedem neuen Projekt ein und nutze Umgebungsvariablen (.env-Dateien) fuer sensible Konfigurationen.