Zum Inhalt springen
Git & GitHub Anfänger 20 min

Gute Commit-Messages schreiben

Lerne, wie du aussagekräftige Commit-Messages schreibst, die dein Team und dein zukünftiges Ich verstehen.

Aktualisiert:

Eine Commit-Message ist wie eine Notiz an dein zukuenftiges Ich. In sechs Monaten wirst du froh sein, wenn du auf einen Blick verstehst, was ein Commit geaendert hat und warum. Gute Commit-Messages sind eine der wichtigsten Faehigkeiten, die du als Entwickler lernen kannst.

Warum sind Commit-Messages wichtig?

Stell dir vor, du liest diese Git-Historie:

git log --oneline

Schlechte Messages:

f3e2d1c fix
b4a3c2d update
a5b4c3e stuff
9d8e7f6 asdf
8c7d6e5 wip

Gute Messages:

f3e2d1c fix: Defekten Login-Button auf mobilen Geraeten repariert
b4a3c2d feat: Suchfunktion zur Navigation hinzugefuegt
a5b4c3e style: Footer-Layout fuer Tablets angepasst
9d8e7f6 docs: API-Dokumentation aktualisiert
8c7d6e5 fix: Tippfehler im Kontaktformular korrigiert

Der Unterschied ist offensichtlich. Gute Messages ersparen dir stundenlange Fehlersuche.

Die Grundregeln

Regel 1: Kurze, beschreibende Betreffzeile

Die erste Zeile sollte maximal 50-72 Zeichen lang sein und die Aenderung klar beschreiben:

# Gut
git commit -m "Navigation zur Startseite hinzugefuegt"

# Schlecht
git commit -m "nav"

Regel 2: Imperativ verwenden

Schreibe die Message so, als wuerdest du Git einen Befehl geben:

# Gut (Imperativ)
git commit -m "Fuege Kontaktformular hinzu"
git commit -m "Korrigiere Tippfehler in der Ueberschrift"
git commit -m "Entferne ungenutztes CSS"

# Schlecht (Vergangenheit)
git commit -m "Kontaktformular hinzugefuegt"
git commit -m "Tippfehler korrigiert"

Merkhilfe: Deine Message sollte den Satz vervollstaendigen: “Wenn angewendet, wird dieser Commit…”

Regel 3: Was und Warum, nicht Wie

# Gut - erklaert das Was und Warum
git commit -m "Erhöhe Timeout auf 30s, um Abbrueche bei langsamen Verbindungen zu vermeiden"

# Schlecht - erklaert nur das Wie
git commit -m "Aendere timeout von 10 auf 30"

Conventional Commits

Conventional Commits sind ein weit verbreiteter Standard fuer Commit-Messages. Viele Teams und Open-Source-Projekte nutzen dieses Format:

<type>: <beschreibung>

Die wichtigsten Typen

TypVerwendungBeispiel
featNeues Featurefeat: Suchfunktion hinzugefuegt
fixBugfixfix: Login-Fehler auf iOS behoben
docsDokumentationdocs: README aktualisiert
styleFormatierung (kein Code-Aenderung)style: Einrueckung korrigiert
refactorCode-Umstrukturierungrefactor: Datenbankzugriff vereinfacht
testTeststest: Unit-Tests fuer Login hinzugefuegt
choreWartungchore: Dependencies aktualisiert

Beispiele in der Praxis

git commit -m "feat: Dunkelmodus fuer die gesamte Webseite implementiert"

git commit -m "fix: Dropdown-Menu schliesst sich nicht beim Klick ausserhalb"

git commit -m "docs: Installationsanleitung fuer macOS ergaenzt"

git commit -m "style: CSS-Klassen nach BEM-Konvention umbenannt"

git commit -m "refactor: Formular-Validierung in eigene Funktion ausgelagert"

git commit -m "test: E2E-Tests fuer den Checkout-Prozess hinzugefuegt"

git commit -m "chore: Node.js auf Version 22 aktualisiert"

Mehrzeilige Commit-Messages

Fuer wichtige Commits kannst du eine ausfuehrliche Beschreibung hinzufuegen:

Format

Kurze Zusammenfassung (max. 72 Zeichen)

Ausfuehrliche Beschreibung des Was und Warum.
Hier kannst du so viel schreiben, wie noetig.

- Aufzaehlung der wichtigsten Aenderungen
- Kontext und Hintergrund
- Verweis auf Issues oder Tickets

So erstellst du eine mehrzeilige Message

Methode 1: Editor oeffnen

git commit

Git oeffnet deinen konfigurierten Editor, in dem du die mehrzeilige Message schreiben kannst.

Methode 2: Mehrere -m Flags

git commit -m "feat: Benutzer-Authentifizierung implementiert" -m "JWT-basierte Authentifizierung mit Refresh-Tokens. Sessions laufen nach 24 Stunden ab. Unterstuetzt Login via E-Mail und OAuth."

Beispiel einer guten mehrzeiligen Message

feat: Warenkorb-Funktion implementiert

Benutzer koennen jetzt Produkte zum Warenkorb hinzufuegen,
die Menge aendern und Produkte entfernen.

- Warenkorb wird im LocalStorage gespeichert
- Anzeige der Gesamtsumme in der Navigation
- Responsive Design fuer mobile Geraete

Closes #42

Haeufige Fehler vermeiden

Fehler 1: Zu vage

# Schlecht
git commit -m "Update"
git commit -m "Fix"
git commit -m "Aenderungen"

# Besser
git commit -m "fix: Seitenumbruch im Drucklayout korrigiert"

Fehler 2: Zu lang in einer Zeile

# Schlecht
git commit -m "Habe die Navigation geaendert und dabei die Links aktualisiert und auch gleich noch das CSS angepasst und einen neuen Footer hinzugefuegt"

# Besser - aufteilen in mehrere Commits!
git commit -m "feat: Hauptnavigation ueberarbeitet"
# ... dann separat:
git commit -m "feat: Neuen Footer mit Sitemap hinzugefuegt"

Fehler 3: Nur Code beschreiben, nicht den Zweck

# Schlecht
git commit -m "if-else in Zeile 42 geaendert"

# Besser
git commit -m "fix: Alterscheck akzeptiert jetzt auch Eingaben unter 18"

Fehler 4: Commit zu gross

Wenn deine Message mehrere “und” enthaelt, ist der Commit wahrscheinlich zu gross:

# Schlecht - zu viel auf einmal
git commit -m "Login und Registrierung und Passwort-Reset und E-Mail-Bestaetigung"

# Besser - vier separate Commits
git commit -m "feat: Login-Seite erstellt"
git commit -m "feat: Registrierungs-Formular hinzugefuegt"
git commit -m "feat: Passwort-Reset implementiert"
git commit -m "feat: E-Mail-Bestaetigung eingebaut"

Commit-Message Vorlagen

Du kannst eine Vorlage fuer deine Commit-Messages erstellen:

# Vorlage erstellen
touch ~/.gitmessage

# Vorlage konfigurieren
git config --global commit.template ~/.gitmessage

Inhalt der Vorlage (~/.gitmessage):

# <type>: <Beschreibung>
#
# Typen: feat, fix, docs, style, refactor, test, chore
#
# Warum ist diese Aenderung noetig?

# Was wurde geaendert?

# Gibt es Nebeneffekte?

Zeilen, die mit # beginnen, werden automatisch ignoriert.

Sprache der Commit-Messages

In internationalen Teams wird Englisch bevorzugt. Fuer persoenliche Projekte oder deutschsprachige Teams ist Deutsch voellig in Ordnung.

SituationEmpfehlung
Open-Source-ProjektEnglisch
Internationales TeamEnglisch
Deutsches TeamDeutsch oder Englisch (Team-Entscheidung)
Persoenliches ProjektWas du bevorzugst

Wichtig: Bleibe bei einer Sprache! Mische nicht Deutsch und Englisch in einem Projekt.

Uebungen

  1. Schreibe fuer folgende Aenderungen eine gute Commit-Message:
    • Du hast einen neuen Blog-Post erstellt
    • Du hast einen Tippfehler in der Navigation korrigiert
    • Du hast das CSS fuer mobile Geraete angepasst
  2. Formatiere eine mehrzeilige Commit-Message fuer ein groesseres Feature
  3. Uebe Conventional Commits: Erstelle 5 Commits mit verschiedenen Typen (feat, fix, docs, style, refactor)

Was kommt als Naechstes?

Im naechsten Kapitel lernst du, wie du die Git-Historie mit git log durchsuchst und filterst. So findest du schnell den Commit, den du suchst.

Zusammenfassung

  • Gute Commit-Messages sind klar, kurz und beschreibend
  • Verwende den Imperativ: “Fuege hinzu” statt “Hinzugefuegt”
  • Conventional Commits (feat, fix, docs…) sind ein bewaehrter Standard
  • Die Betreffzeile sollte maximal 72 Zeichen lang sein
  • Beschreibe das Was und Warum, nicht das Wie
  • Wenn du “und” in der Message brauchst, ist der Commit wahrscheinlich zu gross
  • Bleibe bei einer Sprache im Projekt

Pro-Tipp: Lies die Commit-Messages grosser Open-Source-Projekte auf GitHub, um ein Gefuehl fuer guten Stil zu bekommen. Projekte wie Angular, React oder Vue haben hervorragende Commit-Historien, die als Vorbild dienen koennen.

Zurück zum Git & GitHub Kurs