Nota AI Commit
Use OpenAI / Azure OpenAI / DeepSeek / Gemini API to review Git changes, generate conventional commit messages that meet the conventions, simplify the commit process, and keep the commit conventions consistent.
English · 简体中文 · Marketplace · Report Bug · Request Feature
✨ Features
- 🤯 Support generating commit messages based on git diffs using ChatGPT / Azure API / DeepSeek / Gemini API.
- 🗺️ Support multi-language commit messages.
- 😜 Support adding Gitmoji.
- 🛠️ Support custom system prompt.
- 📝 Support Conventional Commits specification.
This project is forked from sitoi/ai-commit with the following enhancements:
- ✅ Allow generating commit messages even when there are no staged changes (default behavior: prefer staged diff, fallback to unstaged diff)
- ✅ Add
ai-commit.DIFF_SOURCEsetting to control which git changes are used (auto/staged/unstaged/staged+unstaged) - ✅ Add
ai-commit.SCM_INPUT_BEHAVIORsetting to control whether to send the SCM input box content as AI context (context/ignore) - ✅ Add
ai-commit.REFERENCE_GIT_LOGsetting to provide recentgit log --onelinehistory as model context - ✅ Supports Custom Endpoint URLs for Gemini
📦 Installation
- Search for "Nota AI Commit" in VSCode and click the "Install" button.
- Install it directly from the Visual Studio Code Marketplace.
Note
Make sure your node version >= 16
⚙️ Configuration
In the VSCode settings, locate the "ai-commit" configuration options and configure them as needed:
| Configuration | Type | Default | Required | Notes |
|---|---|---|---|---|
| DIFF_SOURCE | string | auto | No | Which changes to use: auto (prefer staged), staged, unstaged, staged+unstaged (adds separators). |
| SCM_INPUT_BEHAVIOR | string | context | No | How to treat SCM input box content: ignore (always ignore), context (send as additional context/requirements). |
| REFERENCE_GIT_LOG | bool | false | No | Include recent git log --oneline history as additional context for the model (disabled by default). |
| GIT_LOG_COUNT | number | 20 | No | How many recent commits to include (1-50). |
| GIT_LOG_AUTHOR_SCOPE | string | all | No | Which authors to include: all or self (uses git config user.name). |
| AI_PROVIDER | string | openai | Yes | Select AI Provider: openai or gemini. |
| OPENAI_API_KEY | string | None | Yes | Required when AI Provider is set to OpenAI. OpenAI token |
| OPENAI_BASE_URL | string | None | No | If using Azure, use: https://{resource}.openai.azure.com/openai/deployments/{model} |
| OPENAI_MODEL | string | gpt-5-mini | Yes | OpenAI MODEL, you can select a model from the list by running the Show Available OpenAI Models command |
| AZURE_API_VERSION | string | None | No | AZURE_API_VERSION |
| OPENAI_TEMPERATURE | number | 0.7 | No | Controls randomness in the output. Range: 0-2. Lower values: more focused, Higher values: more creative |
| GEMINI_API_KEY | string | None | Yes | Required when AI Provider is set to Gemini. Gemini API key |
| GEMINI_BASE_URL | string | None | No | Gemini Base URL (optional). Use a third-party provider endpoint if needed; otherwise leave empty. |
| GEMINI_MODEL | string | gemini-2.0-flash-001 | Yes | Gemini MODEL. Currently, model selection is limited to configuration. |
| GEMINI_TEMPERATURE | number | 0.7 | No | Controls randomness in the output. Range: 0-2 for Gemini. Lower values: more focused, Higher values: more creative |
| AI_COMMIT_LANGUAGE | string | en | Yes | Supports 19 languages |
| SYSTEM_PROMPT | string | None | No | Custom system prompt |
📝 License
This project is MIT licensed.
