Git Commit-Messages mit ChatGPT

Commit-Messages in Git werden oft vernachlässigt. Viele sehen sie lediglich als notwendiges Übel an, um Änderungen zu speichern. Dabei sind aussagekräftige Commit-Messages ein entscheidender Faktor für den Erfolg eines Projekts: Sie sorgen eine gute Nachvollziehbarkeit von Änderungen, eine effiziente Zusammenarbeit im Team und eine schnellere Fehlersuche. Kein Grund, die Commit-Messages automatisch mit Hilfe von KI vorbereiten zu lassen.


Mit Hilfe von sog. Hooks ist es möglich, Scripte z.B. zum automatisierten Testing oder zur Codeprüfung zu bestimmten Ereignissen während des Git-Workflows auszuführen. Der clientseitige prepare-commit-msg-Hook wird unmittelbar vor dem Öffnen des Commit-Editors ausgeführt. Das folgende Bash-Script muss dazu beispielsweise im Ordner ~/git-template/hooks/prepare-commit-msg abgelegt werden:

0d311d3e3743f65bd1f7fa370c3b3848

Anschließend fügt man den OpenAI-API-Key in Zeile \(4\) ein und modifiziert bei Bedarf das verwendete ChatGPT-Model in Zeile \(5\) (in unserem Beispiel gpt-4o). Anschließend machen wir das Script ausführbar mit chmod +x ~/git-template/hooks/prepare-commit-msg und setzen mit git config --global core.hooksPath ~/git-template/hooks das Standardverzeichnis für Git-Hooks in der globalen Git-Konfiguration.

Wichtig: Dadurch muss man lokale Git-Hooks zukünftig nicht mehr in .git/hooks, sondern in ~/git-template/hooks ablegen. Will man weiterhin projektspezifische Hooks haben, führt man jeweils git config core.hooksPath .git/hooks && ln -s ~/git-template/hooks/prepare-commit-msg .git/hooks/prepare-commit-msg im jeweiligen Projekt aus. Will man das Script generell wieder deaktivieren, genügt ein git config --global --unset core.hooksPath.

Das Script generiert für den diff aller gestagten Dateien automatisch eine passende Vorlage für die Commit-Message: git add -A . && git commit. Alternativ kann man auch eine leere Nachricht (".") senden, die anschließend automatisch überschrieben wird: git add -A . && git commit -m "." && git push – doch Vorsicht: Hier ist keine Validierung der Nachricht mehr möglich.

Die KI-Modelle sind inzwischen so weit, dass sehr vernünftige, automatische Commit-Messages auf Basis der durchgeführten Änderungen erstellt werden. Durch Anpassung des Prompts (ab Zeile \(13\)) kann man die Rückgabe weiter optimieren und an die eigenen Bedürfnisse anpassen. Das Script funktioniert übrigens auch in Git-UI-Tools wie Tower und SmartGit.

Zurück