di-sukharev/opencommit
top #1 and most feature rich GPT wrapper for git — generate commit messages with an LLM in 1 sec — works with Claude, GPT and every other provider, supports local Ollama models too
OpenCommit – AI 驅動的提交訊息產生器
它是什麼 – 一個 Node.js 命令列工具(oco),讀取你已暫存的 Git 提交檔案,將差異(或整個檔案內容)傳送給大型語言模型,並回傳簡潔、符合規範的提交訊息。訊息可包含 GitMoji 表情符號、簡短描述,以及可選的「為何」說明。
如何運作 –
- 你將套件全域安裝(
npm i -g opencommit)。 - 為任意支援的 LLM 提供商(OpenAI、Anthropic、Azure、Ollama、llama.cpp、Gemini、Flowise、DeepSeek、OpenRouter、OrcaRouter 等)提供 API 金鑰。
- 執行
oco(或git add … && oco)會透過提供者的 REST 端點將暫存的變更傳送給選定的模型。 - 模型回傳提交訊息,工具將其傳遞給
git commit -m "..."。可選旗標可讓你跳過確認提示、加入表情符號,或強制使用單行訊息。
主要功能(如 README 所述)
- 多提供者支援 – 支援雲端 API(OpenAI、Anthropic、Azure 等)與透過 Ollama 或 llama.cpp 伺服器運行的本地模型。
- 可設定模型與語言 – 預設為
gpt-4o-mini;可切換為提供者支援的任意模型名稱,並設定輸出語言(如de、fr)。 - GitMoji 集成 – 使用
--fgm啟用 10 個簡短表情符號或完整 GitMoji 規範。 - 提交鈎子與 GitHub Action –
oco hook set安裝prepare-commit-msg鈎子;Beta 版 GitHub Action 可在推送時重寫新提交。 - 專案級與全域設定 – 儲存在
~/.opencommit或專案中的.env檔案;支援多種設定項目(OCO_EMOJI、OCO_DESCRIPTION、OCO_WHY、令牌限制、代理等)。 - 忽略檔案 –
.opencommitignore(本機)與~/.opencommitignore(全域)可排除大檔案或密鑰,避免傳送給 LLM。 - 模型管理 –
oco models列出快取的提供者模型;--refresh強制更新。 - 模板佔位符 – 可在大範本中嵌入自訂字串(
$msg),例如oco '#205: $msg'。
典型工作流程
# 一次性安裝
global npm i -g opencommit
# 設定 API 金鑰(每台機器或每個專案一次)
oco config set OCO_API_KEY=sk-…
# 暫存變更(或讓 oco 自動處理)並產生提交
git add .
oco # 開啟確認提示
# 或跳過確認
oco --yes
使用本地模型(Ollama 範例):
ollama run mistral # 只拉取一次模型
oco config set OCO_AI_PROVIDER=ollama OCO_MODEL=llama3:8b
oco
GitHub Action 使用 – 按 README 所示新增 .github/workflows/opencommit.yml;該動作將使用設定的模型與選項在推送時重寫每個新提交。
為何重要 – 寫出清晰、符合規範的提交訊息很繁瑣。OpenCommit 自動化此過程,確保一致性、更好的變更日誌與更順暢的協作,同時讓開發者掌控風格、語言與成本。
安裝 – npm install -g opencommit
文件 – 倉儲的 README(命令:oco、oco config、oco hook、oco models 等)
授權 – 摘錄中未說明;請查看倉儲以取得實際授權。
相關
- 專案
- 專案
- 專案
- 專案
- 專案