Von Gast (nicht überprüft) , 29 April 2026

Übersicht

git commit [-m <msg>] [-a] [--amend] [--no-verify] [-S]

Beschreibung

Der git commit-Befehl nimmt alles, was sich aktuell in der Staging Area befindet, und erstellt ein neues Commit-Objekt im Repository. Ein Commit ist ein unveränderlicher Snapshot, der einen Tree (die Dateiinhalte), Eltern-Zeiger, Autor- und Committer-Metadaten sowie eine Nachricht enthält. Commits sind die Einheit der Historie in Git: Branches sind Zeiger auf Commits, Merges erzeugen Commits mit mehreren Eltern, und Tags markieren bestimmte Commits.

Eine gute Commit-Nachricht hat eine kurze Betreffzeile (unter 50 Zeichen), eine Leerzeile und einen optionalen Body, der das Warum erklärt. Viele Teams verwenden Conventional Commits oder andere Präfixsysteme. Die Option --amend modifiziert den jüngsten Commit, nützlich zum Korrigieren von Tippfehlern in der Nachricht oder wenn Sie vergessen haben, eine Datei zu stagen — aber ändern Sie niemals einen Commit, der bereits gepusht und geteilt wurde.

Im täglichen Einsatz integriert sich git commit eng mit Shell-Aliasen, Editor-Plugins und Continuous Integration. Power-User fügen oft Aliase hinzu, die Flags kombinieren, die sie immer übergeben, oder wickeln den Befehl in Skripte, die Teamkonventionen durchsetzen. Die Ausgabeformatierung kann über Git-Config angepasst werden — Pretty-Formate, Farbschemata und Pager-Verhalten sind alle einstellbar. Wenn etwas schiefgeht, ist der erste Diagnoseschritt üblicherweise, den Befehl erneut mit GIT_TRACE=1 in der Umgebung auszuführen, was die zugrunde liegenden Plumbing-Aufrufe offenlegt. Für ungewöhnliche Situationen öffnet die --help-Ausgabe (git commit --help) die vollständige Manpage mit Details zu jeder Option, einschließlich solcher, die in alltäglichen Workflows selten verwendet werden, aber für Debugging oder Skripting im großen Maßstab essentiell sind.

Zu verstehen, wie git commit mit dem Rest von Gits Datenmodell interagiert — der Objektdatenbank, dem Index, Refs und dem Working Tree — zahlt sich aus. Jeder Befehl operiert auf einer Teilmenge dieser Stücke, und zu wissen, welche er berührt, hilft Ergebnisse vorherzusagen und sich von Fehlern zu erholen. Das Lesen der offiziellen Git-Dokumentation neben praktischer Übung in einem Wegwerf-Repository ist der schnellste Weg, die Nuancen zu verinnerlichen. Die meisten Produktionsprobleme mit Git rühren von einer von drei Ursachen: überraschendem Standardverhalten, partiellen Netzwerkoperationen oder dem Umschreiben bereits geteilter Historie. Ein funktionierendes mentales Modell der Nebenwirkungen von git commit hilft, alle drei zu vermeiden.

Häufige Optionen

OptionBeschreibung
-m <msg>Verwendet die angegebene Nachricht statt einen Editor zu öffnen.
-a, --allStaged automatisch Modifikationen und Löschungen verfolgter Dateien vor dem Committen.
--amendErsetzt den jüngsten Commit durch einen neuen.
--no-verifyÜberspringt pre-commit- und commit-msg-Hooks.
-S, --gpg-signSigniert den Commit per GPG.
--allow-emptyErlaubt einen Commit ohne Änderungen.
--fixup=<commit>Erstellt einen Fixup-Commit für die Verwendung mit Autosquash-Rebase.
-v, --verboseZeigt den Diff im Editor für die Commit-Nachricht.

Beispiele

git commit -m "Fix off-by-one error in pagination"
    # Schneller Commit mit einzeiliger Nachricht

    git commit -am "Update README"
    # Verfolgte Änderungen stagen und in einem Schritt committen

    git commit --amend -m "Better message"
    # Die Nachricht des jüngsten Commits umschreiben

    git commit --fixup=abc123
    # Fixup-Commit erstellen, der beim Rebase gesquasht wird

Häufige Fehler

Einen veröffentlichten Commit zu ändern und dann force-zu-pushen schreibt Historie um, auf der andere Arbeit aufgebaut haben können, was zu Verwirrung führt. Ändern Sie nur lokale, nicht geteilte Commits. Ein weiterer Fehler ist das Committen mit -a, wenn auch untracked Dateien einbezogen werden sollten — -a ignoriert neue Dateien. Schließlich: Verwenden Sie --no-verify niemals nur, um fehlgeschlagene Tests zu umgehen; reparieren Sie stattdessen den Test oder den Code.

Verwandte Befehle

git add, git status, git log, git revert