Zum Inhalt springen
Git & GitHub Anfänger 20 min

.gitignore & Best Practices

Lerne, wie du mit .gitignore Dateien aus der Versionskontrolle ausschließt und dein Repository sauber hältst.

Aktualisiert:

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:

KategorieBeispieleWarum ignorieren?
Abhaengigkeitennode_modules/, venv/Zu gross, werden automatisch installiert
Build-Dateiendist/, build/Werden aus dem Quellcode generiert
Umgebungsvariablen.env, secrets.jsonEnthalten Passwoerter und API-Keys
System-Dateien.DS_Store, Thumbs.dbBetriebssystem-spezifisch
Editor-Dateien.vscode/settings.jsonPersoenliche 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

PatternBeschreibungBeispiel
datei.txtExakte Datei (ueberall)datei.txt
*.logAlle .log-Dateienerror.log, debug.log
ordner/Gesamter Ordnernode_modules/
!dateiAusnahme (nicht ignorieren)!README.md
**/nameIn jedem Verzeichnis**/temp/
/*.txtNur im Hauptverzeichnis/notes.txt
doc/**/*.pdfPDFs in doc und Unterordnerndoc/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

  1. Erstelle ein Projekt mit einer passenden .gitignore
  2. Erstelle eine .env-Datei und stelle sicher, dass sie ignoriert wird
  3. Pruefe mit git check-ignore, ob Regeln funktionieren
  4. Richte eine globale .gitignore fuer dein System ein
  5. 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 .gitignore sagt 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 --cached entfernt 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.

Zurück zum Git & GitHub Kurs