@lobehub/commit-cli

2.19.0 • Public • Published

Lobe Commit

Lobe Commit is a CLI tool that uses ChatGPT to generate Gitmoji-based commit messages

English · 简体中文 · Changelog · Report Bug · Request Feature


Table of contents

TOC

✨ Features

  • [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

📦 Installation

To install Lobe Commit, run the following command:

npm install -g @lobehub/commit-cli

[!IMPORTANT]
Please make sure you have Node.js version >= 18

🤯 Usage

You can use the lobe-commit command to generate a commit message for your staged changes:

$ git add <files...>
$ lobe-commit

[!NOTE]
Use the lobe alias if lobe-commit is too long for you.


AI mode

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 by lobe-commit -o. and if you have special network requirements, you can add OpenAI's forwarding address in the settings.


Editor mode

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.

Git hook

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.


Install

To install the hook in the Git repository, run the following command:

$ lobe-commit --init # or use short flag -i

Uninstall

To uninstall the hook from the Git repository, run the following command:

$ lobe-commit --remove # or use short flag -r

Configuration

To configure Lobe Commit, run the following command:

$ lobe-commit --option # or use short flag -o

Running

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

Options

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

⌨️ Local Development

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

🤝 Contributing

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.

🔗 Links

More Products

  • 🤖 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.

Credits


📝 License

Copyright © 2023 LobeHub.
This project is MIT licensed.

🚀 Advanced Features

File Filtering

Lobe Commit supports intelligent file filtering to exclude irrelevant files from analysis:

Default Exclusions

  • Lock files (*-lock.*, *.lock)
  • Binary files (images, videos, archives)
  • Build artifacts (dist/, node_modules/, etc.)
  • Minified files (*.min.js, *.min.css)

Custom Exclusions

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

Enhanced Prompts

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

Configuration Options

# Include "why" explanations in commit messages
lobe-commit --config

# Select "includeWhy" and set to true

Message Templates

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"

Diff Compression

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)

Full GitMoji Support

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

🔧 Configuration Reference

New Configuration Options

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

File Filtering Rules

  1. Default patterns are always applied
  2. Custom patterns from .lobecommitignore are added
  3. Glob patterns supported (e.g., **/*.test.js)
  4. Comments supported with # prefix
  5. Case sensitive pattern matching

📊 Comparison with OpenCommit

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

🎯 Best Practices

Optimal Workflow

  1. Stage relevant changes: git add <specific-files>
  2. Use file filtering: Create .lobecommitignore for project
  3. Configure templates: Set up issue/PR reference patterns
  4. Enable WHY mode: For complex architectural changes
  5. Review and edit: Use the interactive interface to refine

Performance Tips

  • 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

Quality Guidelines

  • Enable includeWhy for refactoring commits
  • Use full GitMoji for detailed categorization
  • Configure locale for international teams
  • Set up message templates for consistency

🔄 Migration from OpenCommit

If you're migrating from OpenCommit:

  1. Rename ignore file: .opencommitignore.lobecommitignore
  2. Update config: Most settings transfer directly
  3. Enable streaming: For better user experience
  4. Try interactive mode: Leverage the rich UI features
# Quick migration
cp .opencommitignore .lobecommitignore
lobe-commit --config # Set up your preferences

Package Sidebar

Install

npm i @lobehub/commit-cli

Weekly Downloads

123

Version

2.19.0

License

MIT

Unpacked Size

65.8 kB

Total Files

4

Last publish

Collaborators

  • arvinxx
  • canisminor1990