autocommit ist ein Python-Skript, das geänderte Dateien in einem Git-Repository erkennt, ihre Diffs einsammelt und automatisch eine Commit-Nachricht erzeugt. Du kannst entweder den eingebauten Provider-Modus mit Google Gemini (über google-genai), Z.AI GLM Coding Plan (OpenAI-kompatibel, z. B. GLM-4.6) und OpenAI verwenden oder auf macOS einen Shortcuts-Modus nutzen. Danach öffnet sich dein Editor zur Feinjustierung, und auf Wunsch wird automatisch gepusht.
Das Skript unterstützt:
- Erkennung von untracked und modifizierten, aber nicht gestagten Dateien
- Manuelle Bestätigung zum Hinzufügen neuer oder geänderter Dateien
- Automatische Commit-Generierung über Gemini, Z.AI GLM (Coding API), OpenAI oder macOS Shortcuts
- Bearbeitung der Commit-Nachricht im bevorzugten Editor (
$EDITORodervim) - Automatisches Committen und Pushen, falls ein
origin-Remote vorhanden ist
- Python 3.11+
gituv- API-Key für Google Gemini, Z.AI GLM Coding Plan oder OpenAI; alternativ macOS mit installiertem Shortcut
git clone https://github.com/dein-user/autocommit.git ~/dev/auto-commit
cd ~/dev/auto-commit
uv syncuv legt die lokale .venv selbst an und hält sie anhand von pyproject.toml und uv.lock konsistent.
Beispiel siehe env.example. Kopiere die Datei und trage deine Keys ein:
cp env.example .envWichtige Variablen:
COMMIT_MODE:provider(Standard) odershortcutsAI_PROVIDER:gemini(Standard),zaioderopenai- Gemini:
GEMINI_API_KEY, optionalGEMINI_MODEL - Z.AI:
ZAI_API_KEY, optionalZAI_MODEL,ZAI_BASE_URL(Standard:https://api.z.ai/api/coding/paas/v4– Coding API, nicht die General API) - OpenAI:
OPENAI_API_KEY, optionalOPENAI_MODEL, optionalOPENAI_BASE_URL - macOS Shortcuts:
MACOS_SHORTCUT_NAME(Standard:auto-commit-chatgpt) COMMIT_LANGUAGE: Sprache der Commit-NachrichtNO_PUSH:trueoderfalse(Standard:false) – Überspringt dengit pushnach dem Commit
Wenn du lieber die lokale macOS-Shortcuts-Integration verwenden willst, setze:
COMMIT_MODE=shortcuts
MACOS_SHORTCUT_NAME=auto-commit-chatgptDer Shortcut bekommt exakt denselben Prompt wie der eingebaute Modellpfad. Die Übergabe erfolgt als echter Texteingang über AppleScript und Shortcuts Events, nicht als Datei-Upload:
osascript - auto-commit-chatgpt /tmp/prompt.txt <<'APPLESCRIPT'
on run argv
set shortcutName to item 1 of argv
set inputPath to item 2 of argv
set promptText to read POSIX file inputPath
tell application "Shortcuts Events"
return run shortcut shortcutName with input promptText
end tell
end run
APPLESCRIPTDer Modus prüft beim Start:
- dass das System auf macOS läuft
- dass die
shortcuts-CLI verfügbar ist - dass der konfigurierte Shortcut tatsächlich existiert
Shortcut-Link für auto-commit-chatgpt:
cd ~/dev/auto-commit
./scripts/install.shDas Skript führt uv sync aus, testet den CLI-Start und installiert bzw. aktualisiert ~/.local/bin/autocommit.
Der installierte Wrapper nutzt dieses Repository nur als Tool-Quelle; ausgeführt wird autocommit immer im aktuellen Arbeitsverzeichnis.
Falls ~/.local/bin nicht im PATH ist:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc # oder ~/.bashrc
source ~/.zshrc- Google Gemini: Nutzt die
google-genaiAPI. Modell per.env(GEMINI_MODEL) oder CLI--model. - Z.AI GLM Coding Plan: OpenAI-kompatibel. Verwende die Coding-Endpoint
https://api.z.ai/api/coding/paas/v4und setze das Modell (GLM-4.7,GLM-4.6,GLM-4.5,GLM-4.5-air). - OpenAI: Nutzt die
openaiPython SDK (chat.completions). Standardmodell istgpt-5.4-mini(per.envOPENAI_MODELoder via--model). Eine aktuelle Modell-Liste (Model-IDs für--model/OPENAI_MODEL) findest du hier: https://platform.openai.com/docs/models
autocommitOhne installierten Wrapper geht es direkt aus dem Repo heraus:
uv run autocommitCLI-Optionen:
--lang: Sprache der Commit-Nachricht--mode:providerodershortcuts--provider:gemini,zaioderopenai(überschreibt.env)--model: Modellname für den gewählten Provider--shortcut-name: Name des macOS-Shortcuts für--mode shortcuts--zai-base-url: eigenes Base-URL für die Z.AI Coding API (Standard ist bereits gesetzt)--openai-base-url: optional eigenes Base-URL für OpenAI--style: Commit-Stil:sarcastic,humorousoderstandard(default)--no-push: Überspringt dengit pushnach dem Commit (kann auch via.envmitNO_PUSH=truegesetzt werden)
Beispiele:
-
Gemini nutzen (Standard):
autocommit --lang Englisch --model gemini-2.5-flash
-
Z.AI GLM Coding Plan:
autocommit --provider zai --model GLM-4.7 --zai-base-url https://api.z.ai/api/coding/paas/v4
-
OpenAI:
autocommit --provider openai --model gpt-5.4-mini
-
macOS Shortcuts:
autocommit --mode shortcuts --shortcut-name auto-commit-chatgpt
-
Sarcastic Commit-Style:
autocommit --style sarcastic
Untracked Files gefunden:
- new_script.py
- config.json
Möchtest du alle untracked Dateien hinzufügen? (y/n): y
Untracked Files wurden hinzugefügt.
Modifizierte, aber nicht gestagte Dateien gefunden:
- main.py
- utils.py
Möchtest du alle unstaged Dateien hinzufügen? (y/n): y
Unstaged Files wurden hinzugefügt.
Commit-Nachricht:
feat: Automatische Erkennung und AI-generierte Commit-Messages hinzugefügt
Dieses Commit fügt ein Skript hinzu, das geänderte und neue Dateien erkennt und eine AI-generierte Commit-Nachricht vorschlägt.
Öffne Editor für die Commit-Nachricht...
Commit abgeschlossen.
Kein 'origin' Remote gefunden. Überspringe 'git push'.
hash -rfalls das Skript nach Installation nicht gefunden wird../scripts/install.shnach Updates oder bei Import-Problemen.- Normales Update:
git pull, danachuv sync. - Neueste auflösbare Dependency-Versionen prüfen/übernehmen:
uv lock --upgrade, danachuv syncunduv run python -m unittest discover -s tests. --mode shortcutsfunktioniert nur auf macOS und bricht sauber ab, wenn der konfigurierte Shortcut fehlt.- PATH prüfen:
export PATH="$HOME/.local/bin:$PATH".
MIT License – Open Source & für eigene Zwecke anpassbar. 🚀