Aussagekräftige Commit-Nachrichten aus Diffs mit OpenCommit generieren
Wir kennen das alle: Feierabend, ein Dutzend Änderungen in fünf verschiedenen Dateien, Müdigkeit macht sich breit, und schon fliegt ein weiteres Meisterwerk wie git commit -m "fix", wip 2 oder refactor in die Repository-Historie. Ein paar Monate später öffnen Sie dann git log und versuchen herauszufinden, warum die Autorisierung nicht funktioniert, nur um eine Wand von Einzeilern zu sehen.
Der Autor von OpenCommit hat beschlossen, diese Routine zu automatisieren. Das Projekt nimmt Ihre gestagten Änderungen (staged changes), analysiert den Code-Diff mit einem Sprachmodell und erstellt eine ordentliche, klare Beschreibung nach dem Conventional-Commits-Standard.

So funktioniert es in der Praxis
Das Tool wird als globales CLI-Paket über npm installiert. Sie nehmen Änderungen an Ihrem Projekt vor und rufen statt des üblichen Commit-Befehls oco auf:
npm install -g opencommit
Als nächstes müssen Sie einen API-Schlüssel setzen. Standardmäßig ist das Tool für OpenAI-Modelle konfiguriert (zum Beispiel gpt-4o-mini):
oco config set OCO_API_KEY=sk-...
Anschließend wird der Workflow extrem vereinfacht. Sie nehmen Änderungen an Dateien vor und führen aus:
git add .
oco
Der Befehl oco ruft das Modell auf, übergibt den Diff der Änderungen und schlägt fertigen Text vor. Wenn alles gut aussieht, drücken Sie Enter und der Commit wird erstellt. Wenn Sie die manuelle Bestätigung überspringen möchten, gibt es das Flag oco --yes.
Arbeiten ohne Code in die Cloud zu senden
Viele Entwickler können aufgrund von Sicherheitsanforderungen oder Unternehmensrichtlinien keinen Quellcode an Drittanbieter-Server senden. OpenCommit bietet dafür eine Integration mit lokalen Runnern.
Das Tool kann mit Ollama und llama.cpp kommunizieren. Für die lokale Arbeit müssen Sie nur Ollama mit dem gewünschten Modell starten (zum Beispiel Llama 3 oder Mistral) und die Konfiguration umstellen:
oco config set OCO_AI_PROVIDER='ollama' OCO_MODEL='llama3:8b'
Wenn der GPU-Server auf einem separaten Rechner im lokalen Netzwerk läuft, müssen Sie nur die Endpunkt-Adresse angeben:
oco config set OCO_API_URL='http://192.168.1.10:11434/api/chat'
Dasselbe Schema funktioniert für llama.cpp durch Ausführung des eingebauten HTTP-Servers llama-server.
Konfiguration für Team-Standards
OpenCommit verfügt über mehrere nützliche Einstellungen, die generierte Nachrichten für echte Team-Entwicklung geeignet machen.
Conventional Commits und commitlint
Ab Werk generiert das Tool Nachrichten im Conventional-Commits-Format (feat: ..., fix: ..., chore: ...). Wenn in Ihrem Repository bereits @commitlint konfiguriert ist, können Sie das Tool auf lokale Linter-Regeln umstellen:
oco config set OCO_PROMPT_MODULE=@commitlint
Beim ersten Ausführen erstellt der Befehl eine lokale .opencommit-commitlint-Datei, aus der das Modell Beispiele und Einschränkungen für die Textgenerierung nimmt.
Unnötige Dateien ignorieren
Tausende von Zeilen geänderter Lock-Dateien an den Prompt zu senden, ist sinnlos und kostspielig in Bezug auf Tokens. Dateien *.lock und *-lock.* werden automatisch ausgeschlossen, und für andere können Sie .opencommitignore erstellen:
path/to/large-asset.zip
**/*.jpg
dist/**
Templates mit Ticket-Nummern
Oft müssen Sie die Aufgabennummer aus Jira oder GitHub Issues am Anfang der Nachricht angeben. Dafür gibt es Template-Unterstützung über den Platzhalter $msg:
oco '#1042: $msg'
Das Tool ersetzt die generierte Beschreibung an der Stelle von $msg und lässt das Aufgabenpräfix unberührt.
Integration in Git Hook
Der bequemste Weg, mit OpenCommit zu arbeiten, ist, es an den prepare-commit-msg-Hook anzuhängen. Dann müssen Sie sich nicht einmal mehr an den oco-Befehl erinnern.
Der Hook wird aktiviert mit:
oco hook set
Wenn Sie jetzt git commit aufrufen (oder die Commit-Schaltfläche in der VS Code / WebStorm-Oberfläche drücken), generiert OpenCommit automatisch Text und fügt ihn in das Eingabefenster des Editors ein. Sie können die Formulierung sofort anpassen, wenn das Modell ein wichtiges Detail übersehen hat.
Nuancen und Einschränkungen
Bei der Verwendung des Tools gibt es ein paar Dinge zu beachten:
- Diff-Größe. Wenn Sie auf einmal Hunderte von Dateien geändert haben, kann die Anfrage an das Kontextlimit des Modells stoßen oder eine zu generische Beschreibung generieren. OpenCommit funktioniert am besten mit kleinen, atomaren Commits.
- GitHub Action. Das Repository enthält eine fertige Action zum automatischen Korrigieren von Commits beim Push auf einen Branch. Hier ist Vorsicht geboten: Die Action führt einen interaktiven Rebase durch und überschreibt Commit-SHAs. Dieses Szenario kann nicht für gemeinsam genutzte Branches verwendet werden (
main,dev).
Für wen ist es nützlich
OpenCommit löst das Problem der nachlässigen Commit-Historie-Verwaltung in privaten Projekten und kleinen Teams. Wenn Sie zu faul sind, Commits manuell gemäß den Richtlinien zu formatieren, spart das Tool eine Menge Zeit.
Der einfachste Einstieg ist eine globale Installation mit lokalem Ollama: So können Sie die Generierungsqualität sofort an Ihren Repositories testen, ohne Tokens auszugeben.
Ähnliche Projekte