git commit

Grundlegende Snapshots

Änderungen im Repository festhalten


Der Befehl 'git commit' erzeugt einen neuen Commit mit dem aktuellen Inhalt des Index (Staging-Bereich) und einer Nachricht, die die Änderungen beschreibt. Der neue Commit ist ein direktes Kind von HEAD und wird die neue Spitze des aktuellen Branches. Jeder Commit ist ein dauerhafter Snapshot in der Projekthistorie, den man jederzeit wieder ansehen, vergleichen oder wiederherstellen kann.

Syntax

git commit [-a] [-m <msg>] [--amend] [--no-edit] [-v] [-n] [--dry-run] [-s] [-S] [--] [<pathspec>...]
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (8)

Die angegebene Nachricht als Commit-Nachricht nutzen. Mehrfach verwendbar für Nachrichten mit mehreren Absätzen.

EmpfohlenGut für kurze Nachrichten; nutze den Editor für Betreff plus Text

Beispiel

git commit -m "Add login feature"

Vor dem Commit automatisch alle geänderten und gelöschten verfolgten Dateien stagen. Fügt KEINE neuen unverfolgten Dateien hinzu.

Bei BedarfÜberspringt die Staging-Prüfung und nimmt nie neue, nicht getrackte Dateien auf

Beispiel

git commit -a -m "Update all config files"

Die Spitze des aktuellen Branches durch einen neuen Commit ersetzen. Damit korrigierst du die Nachricht des letzten Commits oder fügst vergessene Dateien hinzu. Erzeugt einen neuen Commit-Hash.

Bei BedarfSicher bei nicht gepushten Commits; schreibt Historie um, wenn bereits gepusht

Beispiel

git commit --amend -m "Fixed message"

Den Diff der gestagten Änderungen in der Nachrichtenvorlage anzeigen. Hilft dir, beim Schreiben der Nachricht zu prüfen, was du committest.

EmpfohlenZeigt den Diff, während du die Nachricht schreibst

Beispiel

git commit -v

Zeigen, was committet würde, ohne einen Commit zu erzeugen. Ideal zur Kontrolle vorher.

Bei BedarfZeigt vorab, was committet würde, ohne zu committen

Beispiel

git commit --dry-run

Die Commit-Zusammenfassung mit geänderten Dateien und Einfügungen/Löschungen unterdrücken.

Bei BedarfUnterdrückt die Commit-Zusammenfassung – vor allem für Skripte

Beispiel

git commit -q -m "Silent commit"

Den Editor für die Commit-Nachricht öffnen, auch bei -m, -F oder -C. So kannst du die Nachricht weiter bearbeiten.

Bei BedarfÖffnet den Editor, auch wenn -m, -F oder -C schon eine Nachricht geliefert haben

Beispiel

git commit -m "Initial message" -e

Die gewählte Commit-Nachricht ohne Editor verwenden. Oft mit --amend genutzt, um Dateien hinzuzufügen, ohne die Nachricht zu ändern.

Bei BedarfÜbernimmt die bestehende Nachricht, meist zusammen mit --amend

Beispiel

git commit --amend --no-edit

Fortgeschritten (10)

Die Commit-Nachricht aus der angegebenen Datei lesen. Mit '-' wird von der Standardeingabe gelesen.

Bei BedarfNimmt die Nachricht aus einer Datei oder stdin – für Skripte und lange Nachrichten

Beispiel

git commit -F commit-message.txt

Den Nachrichten-Editor mit dem Inhalt der angegebenen Datei starten (commit.template setzt das standardmäßig). Bleibt die Vorlage unverändert, wird der Commit abgebrochen; ohne Wirkung, wenn -m oder -F die Nachricht liefert.

Bei BedarfGeht von einer Commit-Nachrichtenvorlage des Teams aus

Beispiel

git commit -t .gitmessage

Ein vorhandenes Commit-Objekt nehmen und beim Erstellen des Commits dessen Nachricht und Autorenangaben (einschließlich Zeitstempel) wiederverwenden.

Bei BedarfÜbernimmt Nachricht und Autorschaft eines anderen Commits unverändert

Beispiel

git commit -C HEAD~1

Wie -C, aber öffnet den Editor zum Bearbeiten der Nachricht. Übernimmt die Autorenangaben, lässt dich aber den Text ändern.

Bei BedarfGeht von der Nachricht eines anderen Commits aus und lässt dich sie bearbeiten

Beispiel

git commit -c HEAD~1

Die angegebenen Pfade zusätzlich zum bereits Gestagten stagen und dann alles committen. Laut offizieller Doku ist das meist nicht gewollt, außer beim Abschließen eines Merges mit Konflikten.

Bei BedarfStagt die angegebenen Pfade zusätzlich zu dem, was schon gestagt ist

Beispiel

git commit -i extra-file.js -m "Include additional file"

Nur den Arbeitsbaum-Inhalt der angegebenen Dateien committen; andere gestagte Änderungen bleiben für später gestagt. Standard, wenn Pfade angegeben werden.

Bei BedarfCommittet nur die angegebenen Pfade – bei angegebenen Pfaden ohnehin der Standard

Beispiel

git commit -o urgent-fix.js -m "Hotfix"

Über die interaktive Patch-Auswahl bestimmen, welche Änderungen committet werden. So kannst du Teile von Dateien committen.

EmpfohlenHunks auswählen und in einem Schritt committen

Beispiel

git commit -p

Einen Signed-off-by-Trailer ans Ende der Commit-Nachricht setzen. Bestätigt, dass du den Code einreichen darfst (Developer Certificate of Origin).

Bei BedarfHinzufügen, wenn das Projekt ein DCO-Sign-off verlangt

Beispiel

git commit -s -m "Add feature"

Das Anhängen des Signed-off-by-Trailers abschalten. Hebt ein früheres --signoff auf der Befehlszeile auf (z. B. aus einem Alias).

Bei BedarfHebt ein vorheriges --signoff in derselben Befehlszeile auf

Beispiel

git commit --no-signoff -m "Skip signoff"

Die Ausgabe von git status in die Nachrichtenvorlage im Editor aufnehmen. Standardmäßig an; nützlich, um --no-status aufzuheben.

Bei BedarfNimmt die Statusliste in die Editor-Vorlage auf (Standard)

Beispiel

git commit --status

Erfahren (12)

Den Autor des Commits überschreiben. Angabe im Format 'Author Name <email@example.com>'.

Bei BedarfWürdigt die Arbeit anderer; beim Pairing lieber ein Co-authored-by-Trailer

Beispiel

git commit --author="John Doe <john@example.com>" -m "Fix bug"

Das Autorendatum des Commits überschreiben. Akzeptiert verschiedene Formate wie ISO 8601, RFC 2822 oder relative Angaben.

Bei BedarfÜberschreibt das Autorendatum; selten nötig

Beispiel

git commit --date="2025-01-15 10:30:00" -m "Backdated commit"

Bei --amend, -C oder -c (oder beim Committen nach einem Cherry-Pick mit Konflikten) dich – den Committer – zum Autor des entstehenden Commits machen und den Autor-Zeitstempel erneuern.

Bei BedarfBeansprucht die Autorschaft beim Amenden oder beim Übernehmen einer Nachricht

Beispiel

git commit --amend --reset-author

Die Hooks pre-commit und commit-msg umgehen. Mit Vorsicht nutzen, da diese Hooks oft die Codequalität sichern.

Nicht empfohlenÜberspringt die pre-commit- und commit-msg-Prüfungen – behebe lieber, was der Hook meldet

Beispiel

git commit -n -m "Quick fix (skip hooks)"

Einen Commit ohne Änderungen erlauben. Nützlich, um CI/CD-Pipelines auszulösen oder Meilensteine zu markieren.

Bei BedarfCommits ohne Änderungen, z. B. um die CI auszulösen

Beispiel

git commit --allow-empty -m "Trigger rebuild"

Einen Commit mit leerer Nachricht erlauben. Meist nicht empfohlen, weil die Historie schwerer zu verstehen ist.

Nicht empfohlenLeere Nachrichten machen die Historie unlesbar

Beispiel

git commit --allow-empty-message -m ""

Festlegen, wie die Commit-Nachricht vor dem Commit bereinigt wird. Modi: strip, whitespace, verbatim, scissors, default (strip, wenn der Editor öffnet, sonst whitespace).

Bei BedarfSteuert, wie #-Zeilen und Leerzeichen aus der Nachricht entfernt werden

Beispiel

git commit --cleanup=verbatim -m "Keep message exactly as-is"

Den Commit mit GPG signieren. Belegt, dass der Commit von dir stammt und nicht verändert wurde. Erfordert eine GPG-Einrichtung.

Bei BedarfSigniere, wenn dein Projekt oder Hoster Signaturen prüft

Beispiel

git commit -S -m "Signed commit"

Den Commit nicht mit GPG signieren. Übergeht die Konfiguration commit.gpgSign, wenn sie auf true steht.

Bei BedarfÜberschreibt commit.gpgSign für einen Commit

Beispiel

git commit --no-gpg-sign -m "Unsigned commit"

Einen Fixup-Commit für git rebase --autosquash erstellen. Beim Rebase wird er automatisch in den angegebenen Commit eingeschmolzen.

EmpfohlenSaubere Art, einen älteren Commit zusammen mit rebase --autosquash zu korrigieren

Beispiel

git commit --fixup=abc1234

Einen Squash-Commit für git rebase --autosquash erstellen. Wie --fixup, aber beide Nachrichten bleiben erhalten und werden beim Rebase kombiniert.

Bei BedarfWie --fixup, aber mit kombinierbaren Nachrichten

Beispiel

git commit --squash=abc1234

Einen Trailer (Schlüssel: Wert) zur Commit-Nachricht hinzufügen. Übliche Trailer: Reviewed-by, Co-authored-by, Fixes usw.

Bei BedarfStrukturierte Metadaten wie Co-authored-by oder Reviewed-by

Beispiel

git commit --trailer "Reviewed-by: Jane <jane@example.com>" -m "Fix bug"

Experte (8)

Beim Dry-Run die Ausgabe im Kurzformat liefern. Zeigt den Dateistatus kompakt wie git status -s. Impliziert --dry-run.

Bei BedarfProbelauf-Ausgabe im kurzen Statusformat

Beispiel

git commit --dry-run --short

Beim Dry-Run die Ausgabe im Langformat (Standard) liefern. Zeigt ausführliche Statusinfos zu den Dateien.

Bei BedarfProbelauf-Ausgabe im langen Statusformat

Beispiel

git commit --dry-run --long

Beim Dry-Run die Ausgabe im Porcelain-Format liefern. Stabile, skriptfreundliche Ausgabe, die sich zwischen Git-Versionen nicht ändert.

Bei BedarfMaschinenlesbare Probelauf-Ausgabe für Skripte

Beispiel

git commit --dry-run --porcelain

Branch- und Tracking-Infos beim Dry-Run auch im Kurzformat anzeigen.

Bei BedarfErgänzt die kurze/porcelain Ausgabe des Probelaufs um Branch-Infos

Beispiel

git commit --dry-run --short --branch

Bei Status-Ausgaben im Format short oder porcelain Einträge mit NUL statt Zeilenumbruch abschließen. Nützlich, um Dateinamen mit Sonderzeichen zu verarbeiten.

Bei BedarfNUL-terminierte Probelauf-Ausgabe für Skripte

Beispiel

git commit --dry-run --porcelain -z

Die Ausgabe von git status nicht in die Nachrichtenvorlage im Editor aufnehmen.

Bei BedarfBlendet die Statusliste in der Editor-Vorlage aus

Beispiel

git commit --no-status

Den post-rewrite-Hook umgehen, den git commit nur beim Amend (--amend) ausführt.

Bei BedarfÜberspringt den post-rewrite-Hook bei --amend; selten nötig

Beispiel

git commit --amend --no-post-rewrite

Die Pathspec aus einer Datei (eine pro Zeile) statt von der Befehlszeile lesen. Mit '-' wird von der Standardeingabe gelesen.

Bei BedarfFür Skripte, die viele Pfade committen

Beispiel

git commit --pathspec-from-file=files.txt -m "Commit listed files"

Die richtige Option wählen

Nachrichten-Optionen

Verschiedene Wege, die Commit-Nachricht anzugeben oder zu bearbeiten

BefehlQuelleÖffnet EditorAnwendungsfall
git commit -m "msg"In der Zeile✗Schnelle Commits mit kurzen Nachrichten
git commit -F fileDatei✗Vorgeschriebene Nachricht aus einer Datei
git commit -t fileVorlage✓Mit einer Vorlage im Editor beginnen
git commit -eEditor✓Editor auch mit -m erzwingen
git commit -C <commit>Kopieren✗Nachricht eines anderen Commits wiederverwenden
git commit -c <commit>Kopieren + Bearbeiten✓Nachricht eines anderen Commits bearbeiten

Bereinigen der Nachricht

Wie die Commit-Nachricht vor dem Speichern verarbeitet wird

BefehlModusEntfernt KommentareEntfernt LeerraumAm besten für
--cleanup=stripstrip✓✓Die meisten Commits
--cleanup=whitespaceLeerraum✗✓#-Kommentare behalten
--cleanup=verbatimWörtlich✗✗Nachricht exakt erhalten
--cleanup=scissorsSchereNur unterhalb der Scheren-Zeile✓#-Zeilen beim Editor behalten

Autor und Datum

Überschreiben, wer den Commit gemacht hat und wann

BefehlÜberschreibtFormatTypische Nutzung
--author="Name <email>"AutorName <email>Im Namen einer anderen Person committen
--date="date"AutorendatumISO 8601 / relativCommits rückdatieren
--reset-authorBeideAktueller Nutzer/aktuelle ZeitEinen angewendeten Patch übernehmen

Amend und Historie korrigieren

Optionen zum Ändern vorhandener Commits

BefehlErzeugtÄndert HEADZu nutzen mit
git commit --amendErsatz✓Nachricht oder Inhalt des letzten Commits korrigieren
git commit --fixup=<sha>fixup!-Commit✗git rebase -i --autosquash
git commit --squash=<sha>squash!-Commit✗git rebase -i --autosquash

Was committet wird

Steuern, welche Dateien in den Commit kommen

BefehlStagt vorherCommitsArbeitsverzeichnis
git commit✗Nur GestagtesUnverändert
git commit -aVerfolgte DateienAlle verfolgtenUnverändert
git commit -i <file>AngegebeneGestagtes + DateiUnverändert
git commit -o <file>Nur angegebeneNur die DateiAndere gestagte ausgeschlossen
git commit -pInteraktivAusgewählte HunksUnverändert

GPG-Signatur

Commits kryptografisch signieren, damit sie überprüfbar sind

BefehlAktionVerwendeter SchlüsselWann verwenden
git commit -SSignierenStandard-GPG-SchlüsselEchtheit von Commits nachweisen
git commit -S<keyid>SignierenBestimmter SchlüsselAnderen Signaturschlüssel nutzen
git commit --no-gpg-signNicht signierenKeinecommit.gpgSign=true übergehen

Hook-Steuerung

pre-commit- und post-commit-Hooks umgehen oder steuern

BefehlÜberspringtRisikoWann verwenden
git commit --no-verifypre-commit + commit-msgMittelNotfall-Fix, Hooks später reparieren
git commit --no-post-rewritepost-rewriteNiedrigLangsame Nachbearbeitung nach dem Amend überspringen

Dry-Run und Ausgabeformat

Vorschau, was committet würde, ohne zu committen

BefehlFormatMaschinenlesbarZeigt
--dry-runLang (Standard)✗Vollständiger Status mit Hinweisen
--dry-run --shortKurz✓Kompakte Statuscodes
--dry-run --porcelainPorcelain✓Stabiles Format für Skripte
--dry-run --branchMit Branch✓Ergänzt die Kurzform um Tracking-Infos
--dry-run -zNUL-getrennt✓Sicher bei besonderen Dateinamen

Statusanzeige im Editor

Steuern, was beim Schreiben der Nachricht im Editor erscheint

BefehlIm EditorWirkung
git commit --statusStatus als KommentareZu committende Dateien sehen (Standard)
git commit --no-statusKeine DateilisteAufgeräumter Editor, weniger Ablenkung
git commit -vVollständiger DiffBeim Schreiben die genauen Änderungen prüfen
git commit -qNormaler EditorZusammenfassung nach dem Commit unterdrücken

Besondere Commits

Commits in ungewöhnlichen Situationen erstellen

BefehlErlaubtErzeugt CommitAnwendungsfall
--allow-emptyKeine Änderungen✓CI-Auslöser, Branch-Markierungen
--allow-empty-messageKeine Nachricht✓Automatisierte Skripte (nicht empfohlen)
--trailer "Key: value"Metadaten✓Co-authored-by, Fixes, Reviewed-by

Workflow-Beispiele

1
git add .

Deine Änderungen stagen

2
git commit -m "Fix typo in README"

Mit einer kurzen Nachricht committen

1
git add -A

Alle Änderungen stagen

2
git commit

Öffnet den Editor für eine mehrzeilige Nachricht

3
(Write: subject line, blank line, detailed body)

Beim Formatieren die 50/72-Regel befolgen

1
git add forgotten-file.js

Die vergessene Datei stagen

2
git commit --amend --no-edit

Zum letzten Commit hinzufügen, ohne die Nachricht zu ändern

1
git commit --amend -m "Corrected message"

Letzten Commit mit neuer Nachricht ersetzen

1
git commit -a -m "Update config files"

Geänderte/gelöschte verfolgte Dateien automatisch stagen und committen

1
git add .

Änderungen stagen

2
git commit -S -m "Verified security patch"

GPG-signierten Commit erstellen

Editor- und interaktive Tasten

Tastenkürzel, wenn Git einen Editor für deine Commit-Nachricht öffnet oder du interaktive Modi nutzt.

Vim (auf vielen Systemen Standard)

core.editor = vim
iEinfügemodus starten (lostippen)
EscEinfügemodus verlassen
:wqSpeichern und beenden (schließt den Commit ab)
:q!Ohne Speichern beenden (bricht den Commit ab)
ddAktuelle Zeile löschen
uLetzte Änderung rückgängig machen

Nano

core.editor = nano
Ctrl+ODatei speichern (write out)
Ctrl+XBeenden (fragt bei Änderungen nach dem Speichern)
Ctrl+KAktuelle Zeile ausschneiden
Ctrl+UAusgeschnittenen Text einfügen
Ctrl+WIn der Datei suchen

VS Code

core.editor = "code --wait"
Ctrl+SDatei speichern
Ctrl+WTab schließen (schließt den Commit ab)
Ctrl+ZRückgängig
Close without savingCommit abbrechen

Patch-Modus (-p)

git commit -p
yDiesen Hunk stagen
nDiesen Hunk nicht stagen
qBeenden; übrige Hunks nicht stagen
aDiesen und alle übrigen Hunks stagen
dDiesen und die übrigen Hunks nicht stagen
sHunk in kleinere Hunks aufteilen
eHunk von Hand bearbeiten
?Hilfe anzeigen

Fehlerbehebung

no changes added to commit (use "git add" and/or "git commit -a")

Ursache: Dateien wurden geändert, aber nichts ist gestagt – du hast 'git add' vergessen. (Siehst du 'nothing to commit, working tree clean', gibt es gar keine Änderungen.)

Stage Änderungen mit 'git add', bevor du committest. Mit 'git status' siehst du, was gestagt werden muss.

git add . && git commit -m "message"

Please tell me who you are (Author identity unknown)

Ursache: Git verlangt, dass user.name und user.email vor deinem ersten Commit konfiguriert sind.

Konfiguriere deine Identität global oder für dieses Repository.

git config --global user.name "Your Name" && git config --global user.email "you@example.com"

Aborting commit due to empty commit message

Ursache: Du hast den Editor ohne Nachricht geschlossen, oder die Nachricht enthielt nur Kommentare.

Schreibe im Editor eine Commit-Nachricht oder nutze die Option '-m' für eine Nachricht in der Zeile.

git commit -m "Your message here"

pre-commit-Hook fehlgeschlagen

Ursache: Ein pre-commit-Hook (Linting, Tests, Formatierung) hat Probleme gefunden und den Commit blockiert.

Behebe die vom Hook gemeldeten Probleme. Umgehe ihn mit '--no-verify' nur, wenn es wirklich nicht anders geht.

git commit --no-verify -m "message"

commit-msg-Hook fehlgeschlagen

Ursache: Deine Commit-Nachricht entspricht nicht dem Format, das die Projektkonventionen verlangen.

Halte dich an die Konvention für Commit-Nachrichten in deinem Projekt (z. B. das Format Conventional Commits).

git commit -m "feat: add new feature"

Changes not staged for commit

Ursache: Du hast Dateien geändert, sie aber nicht zum Staging-Bereich hinzugefügt.

Nutze 'git add', um bestimmte Dateien zu stagen, oder 'git commit -a', um verfolgte Dateien automatisch zu stagen.

git add <file> && git commit -m "message"

error: failed to push some refs (nach einem Amend)

Ursache: Du hast einen bereits gepushten Commit geamendet und damit eine abweichende Historie erzeugt.

Entweder Force-Push (wenn du allein auf dem Branch arbeitest) oder revert und einen neuen Commit erstellen.

git push --force-with-lease

Your branch is ahead of 'origin/main' by X commits

Ursache: Du hast lokale Commits, die noch nicht gepusht sind.

Das ist normal! Pushe, wenn du so weit bist, oder arbeite lokal weiter.

git push origin main

Tipps & Stolperfallen

Best Practices

  • ✓Schreibe klare Commit-Nachrichten: Beginne mit einem Verb (Add, Fix, Update, Remove) und halte den Betreff unter 50 Zeichen.
  • ✓Nutze den Imperativ: Schreibe 'Add feature', nicht 'Added feature' – stell dir vor, du ergänzt „This commit will...“
  • ✓Mache atomare Commits: Jeder Commit sollte genau eine logische Änderung enthalten. Mische keine Bugfixes mit neuen Features.
  • ✓Vor dem Committen prüfen: Nutze 'git diff --staged', um genau zu sehen, was du gleich committest.
  • ✓Gepushte Commits nie amenden: Amend schreibt die Historie um. Ändere nur Commits, die noch nicht geteilt wurden.
  • ✓Betreff und Text durch eine Leerzeile trennen: Bei längeren Nachrichten ist die erste Zeile der Betreff, dann folgt eine Leerzeile, dann die Details.
  • ✓Den Text bei 72 Zeichen umbrechen: So bleibt er in Terminals und in der Ausgabe von git log lesbar.
  • ✓Issue-Nummern nennen: Füge 'Fixes #123' oder 'Closes #456' hinzu, um Commits mit dem Issue-Tracking zu verknüpfen.
  • ✓Oft committen, seltener pushen: Kleine, häufige Commits sind leichter zu reviewen und rückgängig zu machen als große.
  • ✓Keine generierten Dateien committen: Halte Build-Artefakte, Abhängigkeiten (node_modules) und kompilierte Dateien aus Commits heraus.

Häufige Fehler

  • ✗'git commit' ausführen, ohne vorher zu stagen: Du musst zuerst 'git add' nutzen, außer bei 'git commit -a', das nur verfolgte Dateien stagt.
  • ✗Vage Nachrichten wie 'fix' oder 'update' schreiben: Nutze klare, beschreibende Nachrichten, die erklären, WARUM die Änderung gemacht wurde.
  • ✗Zu viele unabhängige Änderungen auf einmal committen: Mache atomare Commits – eine logische Änderung pro Commit erleichtert Review und Revert.
  • ✗--amend auf Commits nutzen, die schon auf geteilte Branches gepusht sind: Amend schreibt die Historie um und macht anderen Probleme.
  • ✗Vergessen, user.name und user.email zu konfigurieren: Git verlangt vor deinem ersten Commit eine Autor-Identität.

FAQ

A:

'git commit' committet nur, was im Staging-Bereich liegt. 'git commit -a' stagt vor dem Commit automatisch alle geänderten und gelöschten verfolgten Dateien – aber NICHT neue unverfolgte Dateien. Für neue Dateien brauchst du weiterhin 'git add'.

A:

Für nicht gepushte Commits: 'git reset --soft HEAD~1' behält die Änderungen gestagt, 'git reset HEAD~1' (wie --mixed) unstagt sie, 'git reset --hard HEAD~1' verwirft sie. Für gepushte Commits: Nutze 'git revert HEAD', um einen neuen Commit zu erzeugen, der die Änderungen rückgängig macht.

A:

Für den letzten Commit: 'git commit --amend -m "New message"'. Für ältere Commits: Nutze 'git rebase -i' und ändere 'pick' in 'reword'. Mach das nie bei Commits, die schon auf geteilte Branches gepusht sind.

A:

Git öffnet deinen konfigurierten Editor, damit du eine Nachricht schreibst. Schließt du ihn, ohne eine Nachricht zu speichern, wird der Commit abgebrochen. Nutze '-m' für eine Nachricht in der Zeile oder '--allow-empty-message', um ohne Nachricht zu committen (nicht empfohlen).

A:

Stage die zusätzlichen Dateien mit 'git add <file>' und führe dann 'git commit --amend --no-edit' aus. So kommen sie in den vorigen Commit, ohne dessen Nachricht zu ändern.

A:

'--amend' ersetzt den letzten Commit komplett (neuer Hash!). Nutze es, um Tippfehler in Nachrichten zu korrigieren oder vergessene Dateien hinzuzufügen. Nutze es nie bei Commits, die schon auf geteilte Branches gepusht sind – es schreibt die Historie um.

A:

Nutze mehrere -m-Optionen: 'git commit -m "Subject" -m "Body paragraph"'. Jedes -m erzeugt einen neuen Absatz. Oder führe einfach 'git commit' aus, um den Editor zu öffnen.

A:

Halte die Betreffzeile unter 50 Zeichen (harte Grenze 72). Brich den Text bei 72 Zeichen um. So bleibt alles im Terminal, in git log und in den Oberflächen von GitHub/GitLab lesbar.

A:

Nutze 'git commit --no-verify' oder '-n'. Das umgeht die Hooks pre-commit und commit-msg. Sparsam einsetzen – Hooks sichern die Codequalität.

A:

Ja, mit 'git commit --allow-empty -m "message"'. Nützlich, um CI/CD-Pipelines auszulösen oder Meilensteine in der Historie zu markieren, ohne Code zu ändern.