Lobe Commit is a CLI tool that uses ChatGPT to generate Gitmoji-based commit messages
English · 简体中文 · Changelog · Report Bug · Request Feature
Table of contents
- [x] 🤯 Supports auto-generating commit messages based on diffs using ChatGPT
- [x] 🛠️ Supports streamlined commit message editing workflow
- [x] 😜 Supports adding Gitmojis
- [x] 📝 Supports Conventional Commits specification
- [x] ⚡️ Supports pulling a list of issues and convenient binding
- [x] 💄 Supports custom prompts
- [x] 🗺️ Supports multi-language commit messages
To install Lobe Commit, run the following command:
npm install -g @lobehub/commit-cli
[!IMPORTANT]
Please make sure you haveNode.js
version >= 18
You can use the lobe-commit
command to generate a commit message for your staged changes:
$ git add <files...>
$ lobe-commit
[!NOTE]
Use thelobe
alias iflobe-commit
is too long for you.
With AI mode, you can generate a complete commit message using ChatGPT.
[!IMPORTANT]
To use AI auto-generation, you need to fill in your OpenAI token in the settings bylobe-commit -o
. and if you have special network requirements, you can add OpenAI's forwarding address in the settings.
In Editor mode, you can choose the <type>(<optional scope>): <subject> [<issues>]
format by following a simple flow.
[!NOTE]
If your project is a GitHub repository, the Editor mode feature will automatically fetch the issues associated with your repository. You can select multiple issues to link to your commit message by space .Auto-Skip for Private Repositories: When working with private repositories, if you haven't configured a GitHub token or encounter authentication issues, the tool will automatically skip the issues linking step and proceed to commit generation. This prevents the workflow from getting stuck while still allowing manual issue linking if needed.
You can integrate Lobe Commit with Git via the prepare-commit-msg
hook. This allows you to use Git as you normally would and edit the commit message before committing.
To install the hook in the Git repository, run the following command:
$ lobe-commit --init # or use short flag -i
To uninstall the hook from the Git repository, run the following command:
$ lobe-commit --remove # or use short flag -r
To configure Lobe Commit, run the following command:
$ lobe-commit --option # or use short flag -o
To make a commit, run one of the following commands:
$ lobe-commit --hook # Run either of the two commands
$ git commit
- To use AI auto-generation, you need to fill in your OpenAI token in the settings.
- To automatically pull private issues, you need to fill in your GitHub token with repo permissions in the settings.
[!NOTE]
GitHub Token Configuration: For private repositories or when you want to link issues automatically, you need to configure a GitHub token with appropriate permissions. If no token is provided or if there are authentication issues (invalid token, network timeout, etc.), the tool will automatically skip the issues linking step and continue with the commit process. You can still manually input issue numbers if needed.Error Handling: The tool gracefully handles various scenarios including:
- No GitHub token configured
- Invalid or expired tokens
- Network connection issues
- Private repository access restrictions
- API rate limiting and timeouts
Lobe Commit supports the following options:
--hook Commit interactively using prompts
-a, --ai Generate prompts by ChatGPT
-o, --option Setup lobe-commit preferences
-i, --init Initialize lobe-commit as a commit hook
-r, --remove Remove a previously initialized commit hook
-l, --list List all commit types supported
-V, --version Print lobe-commit installed version
-h, --help Print basic options
You can use Github Codespaces for online development:
Or clone it for local development:
$ git clone https://github.com/lobehub/lobe-cli-toolbox.git
$ cd lobe-cli-toolbox
$ bun install
$ cd packages/lobe-commit
$ bun dev
Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub Issues to get stuck in to show us what you're made of.
- 🤖 Lobe Chat - An open-source, extensible (Function Calling), high-performance chatbot framework. It supports one-click free deployment of your private ChatGPT/LLM web application.
- 🤯 Lobe Theme - The modern theme for stable diffusion webui, exquisite interface design, highly customizable UI, and efficiency boosting features.
- langchainjs - https://github.com/hwchase17/langchainjs
- ink - https://github.com/vadimdemedes/ink
- gitmoji-commit-workflow - https://github.com/arvinxx/gitmoji-commit-workflow
- gitmoji-cli - https://github.com/carloscuesta/gitmoji-cli
Copyright © 2023 LobeHub.
This project is MIT licensed.
Lobe Commit supports intelligent file filtering to exclude irrelevant files from analysis:
- Lock files (
*-lock.*
,*.lock
) - Binary files (images, videos, archives)
- Build artifacts (
dist/
,node_modules/
, etc.) - Minified files (
*.min.js
,*.min.css
)
Create a .lobecommitignore
file in your project root:
# Custom ignore patterns
path/to/large-asset.zip
**/*.custom-extension
docs/api/*.json
# Environment-specific files
.env.staging
config/secrets.yaml
The new prompt system provides:
- Context Awareness: Analyzes file paths, function names, and change patterns
- Business Impact Focus: Emphasizes user-facing changes and business value
- Technical Precision: Better understanding of architectural decisions
- WHY Explanations: Optional explanations of change motivations
# Include "why" explanations in commit messages
lobe-commit --config
# Select "includeWhy" and set to true
Support for custom message templates with placeholders:
# Example: Include issue references
git commit # message: "feat: add user authentication"
# With template: "feat: add user authentication (#123)"
Configure template in settings:
-
messageTemplate
: Pattern like"$msg (#123)"
or"[PROJ-456] $msg"
Intelligent diff compression for large changes:
- Prioritizes actual code changes over context
- Maintains file headers and change indicators
- Truncates verbose output while preserving meaning
- Maximum 200 lines by default (configurable)
Toggle between:
- Simplified: 10 most common emojis (default)
- Full Specification: Complete gitmoji.dev standard
# Enable full GitMoji specification
lobe-commit --config
# Set "useFullGitmoji" to true
Option | Type | Default | Description |
---|---|---|---|
includeWhy |
boolean | false |
Include explanation of why changes were made |
messageTemplate |
string | "$msg" |
Template for commit messages with placeholders |
oneLineCommit |
boolean | false |
Force single-line commit messages |
useFullGitmoji |
boolean | false |
Use complete GitMoji specification |
- Default patterns are always applied
-
Custom patterns from
.lobecommitignore
are added -
Glob patterns supported (e.g.,
**/*.test.js
) -
Comments supported with
#
prefix - Case sensitive pattern matching
Feature | Lobe Commit | OpenCommit |
---|---|---|
Interactive UI | ✅ Rich CLI UI | ❌ Simple prompts |
File Filtering | ✅ .lobecommitignore
|
✅ .opencommitignore
|
Streaming | ✅ Real-time | ❌ Batch only |
Issue Integration | ✅ GitHub Issues | ❌ Manual only |
Custom Prompts | ✅ Enhanced system | ✅ Basic templates |
Diff Compression | ✅ Intelligent | ❌ Raw diff |
Multi-language | ✅ Built-in | ✅ Via config |
-
Stage relevant changes:
git add <specific-files>
-
Use file filtering: Create
.lobecommitignore
for project - Configure templates: Set up issue/PR reference patterns
- Enable WHY mode: For complex architectural changes
- Review and edit: Use the interactive interface to refine
- Use
.lobecommitignore
to exclude large files - Enable diff compression for complex changes
- Use specific staging rather than
git add .
- Configure appropriate
maxLength
for your team
- Enable
includeWhy
for refactoring commits - Use full GitMoji for detailed categorization
- Configure locale for international teams
- Set up message templates for consistency
If you're migrating from OpenCommit:
-
Rename ignore file:
.opencommitignore
→.lobecommitignore
- Update config: Most settings transfer directly
- Enable streaming: For better user experience
- Try interactive mode: Leverage the rich UI features
# Quick migration
cp .opencommitignore .lobecommitignore
lobe-commit --config # Set up your preferences