Files
QuiCommit/readme_zh.md

495 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# QuiCommit
[English](README.md) | 简体中文
一款强大的AI驱动的Git助手用于生成规范化的提交信息、标签和变更日志并支持管理多个Git配置。
【目前还处在早期开发阶段,依然有一些功能未完善,欢迎反馈和贡献。】
![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=for-the-badge&logo=rust&logoColor=white)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
## 主要功能
- **AI智能生成**使用LLM APIOllama本地、OpenAI、Anthropic Claude、Kimi、DeepSeek、OpenRouter生成提交信息、标签和变更日志
- **规范化提交**支持Conventional Commits和commitlint格式规范
- **多配置管理**为不同场景管理多个Git身份支持SSH密钥和GPG签名配置
- **智能标签管理**基于语义版本自动检测升级AI生成标签信息
- **变更日志生成**自动生成Keep a Changelog格式的变更日志
- **安全保护**:加密存储敏感数据
- **交互式界面**美观的CLI界面支持预览和确认
## 安装
### cargo安装
cargo安装版本可能暂时不如源码进展快速。
```bash
cargo install quicommit
```
### 从源代码安装
```bash
git clone https://git.lyz.one/SidneyZhang/QuiCommit.git
cd QuiCommit
cargo build --release
cargo install --path .
```
要求Rust 1.70+、Git 2.0+
## 快速开始
### 初始化配置
```bash
quicommit init
```
### 生成提交信息
```bash
# AI生成提交信息默认
quicommit commit
# 手动提交
quicommit commit --manual -t feat -m "添加新功能"
# 暂存所有文件并提交
quicommit commit -a
# 跳过确认直接提交
quicommit commit --yes
# 使用日期格式的提交信息
quicommit commit --date
# 提交后推送到远程
quicommit commit --push
```
### 创建标签
```bash
# 自动检测版本升级
quicommit tag
# 指定版本升级类型
quicommit tag --bump minor
# 自定义标签名
quicommit tag -n v1.0.0
# AI生成标签信息
quicommit tag --generate
# 创建标签并推送到远程
quicommit tag --push
```
### 生成变更日志
```bash
# 生成未发布变更的变更日志
quicommit changelog
# 为特定版本生成
quicommit changelog -v 1.0.0
# AI生成变更日志
quicommit changelog --generate
# 初始化新的变更日志文件
quicommit changelog --init
# 指定输出文件
quicommit changelog -o RELEASE_NOTES.md
```
### 配置管理
```bash
# 添加新配置
quicommit profile add
# 查看配置列表
quicommit profile list
# 显示配置详情
quicommit profile show
# 切换配置
quicommit profile switch
# 设置默认配置
quicommit profile set-default personal
# 设置当前仓库的配置
quicommit profile set-repo personal
# 应用配置到当前仓库
quicommit profile apply
# 全局应用配置
quicommit profile apply --global
# 复制配置
quicommit profile copy personal work
# 编辑配置
quicommit profile edit personal
# 删除配置
quicommit profile remove old-profile
# 检查配置
quicommit profile check
# 查看使用统计
quicommit profile stats
# 管理配置的令牌
quicommit profile token
```
### LLM配置
```bash
# 配置Ollama本地
quicommit config set-llm ollama
quicommit config set-ollama --url http://localhost:11434 --model llama2
# 配置OpenAI
quicommit config set-llm openai
quicommit config set-openai-key YOUR_API_KEY
# 配置Anthropic Claude
quicommit config set-llm anthropic
quicommit config set-anthropic-key YOUR_API_KEY
# 配置Kimi
quicommit config set-llm kimi
quicommit config set-kimi-key YOUR_API_KEY
quicommit config set-kimi --base-url https://api.moonshot.cn/v1 --model moonshot-v1-8k
# 配置DeepSeek
quicommit config set-llm deepseek
quicommit config set-deepseek-key YOUR_API_KEY
quicommit config set-deepseek --base-url https://api.deepseek.com/v1 --model deepseek-chat
# 配置OpenRouter
quicommit config set-llm openrouter
quicommit config set-openrouter-key YOUR_API_KEY
quicommit config set-openrouter --base-url https://openrouter.ai/api/v1 --model openai/gpt-4
# 设置提交格式
quicommit config set-commit-format conventional
# 设置版本前缀
quicommit config set-version-prefix v
# 设置变更日志路径
quicommit config set-changelog-path CHANGELOG.md
# 设置输出语言
quicommit config set-language zh
# 设置保持提交类型为英文
quicommit config set-keep-types-english true
# 设置保持变更日志类型为英文
quicommit config set-keep-changelog-types-english true
# 测试LLM连接
quicommit config test-llm
# 重置配置为默认值
quicommit config reset
```
## 命令参考
| 命令 | 别名 | 说明 |
|------|------|------|
| `quicommit init` | `i` | 初始化配置 |
| `quicommit commit` | `c` | 生成并执行提交 |
| `quicommit tag` | `t` | 生成并创建标签 |
| `quicommit changelog` | `cl` | 生成变更日志 |
| `quicommit profile` | `p` | 管理Git配置 |
| `quicommit config` | `cfg` | 管理应用配置 |
### commit命令选项
| 选项 | 说明 |
|------|------|
| `--commit-type` | 提交类型feat、fix等 |
| `-s, --scope` | 提交范围 |
| `-m, --message` | 提交描述 |
| `--body` | 提交正文 |
| `-b, --breaking` | 标记为破坏性变更 |
| `-d, --date` | 使用日期格式的提交信息 |
| `--manual` | 手动输入跳过AI生成 |
| `-a, --all` | 暂存所有更改 |
| `-S, --sign` | GPG签名提交 |
| `--amend` | 修改上一次提交 |
| `--dry-run` | 试运行,不实际提交 |
| `--conventional` | 使用Conventional Commits格式 |
| `--commitlint` | 使用commitlint格式 |
| `--no-verify` | 不验证提交信息 |
| `-y, --yes` | 跳过确认提示 |
| `--push` | 提交后推送到远程 |
| `--remote` | 指定远程仓库默认origin |
### tag命令选项
| 选项 | 说明 |
|------|------|
| `-n, --name` | 标签名称 |
| `-b, --bump` | 版本升级类型major/minor/patch |
| `-m, --message` | 标签信息 |
| `-g, --generate` | AI生成标签信息 |
| `-S, --sign` | GPG签名标签 |
| `-l, --lightweight` | 创建轻量标签 |
| `-f, --force` | 强制覆盖已存在的标签 |
| `-p, --push` | 推送到远程 |
| `-r, --remote` | 指定远程仓库默认origin |
| `--dry-run` | 试运行 |
| `-y, --yes` | 跳过确认提示 |
### changelog命令选项
| 选项 | 说明 |
|------|------|
| `-o, --output` | 输出文件路径 |
| `-v, --version` | 为特定版本生成 |
| `-f, --from` | 从指定标签生成 |
| `-t, --to` | 生成到指定引用默认HEAD |
| `-i, --init` | 初始化新的变更日志文件 |
| `-g, --generate` | AI生成变更日志 |
| `--prepend` | 添加到现有变更日志开头 |
| `--include-hashes` | 包含提交哈希 |
| `--include-authors` | 包含作者信息 |
| `--format` | 格式keep-a-changelog、github-releases |
| `--dry-run` | 试运行输出到stdout |
| `-y, --yes` | 跳过确认提示 |
## 配置文件
配置文件位置:
- Linux: `~/.config/quicommit/config.toml`
- macOS: `~/Library/Application Support/quicommit/config.toml`
- Windows: `%APPDATA%\quicommit/config.toml`
```toml
version = "1"
default_profile = "personal"
[profiles.personal]
name = "personal"
user_name = "Your Name"
user_email = "your.email@example.com"
description = "个人项目"
is_work = false
[profiles.work]
name = "work"
user_name = "Your Name"
user_email = "your.name@company.com"
description = "工作项目"
is_work = true
organization = "Your Company"
[profiles.work.ssh]
private_key_path = "/home/user/.ssh/id_rsa_work"
agent_forwarding = true
[profiles.work.gpg]
key_id = "YOUR_GPG_KEY_ID"
program = "gpg"
use_agent = true
[llm]
provider = "ollama"
max_tokens = 500
temperature = 0.7
timeout = 30
[llm.ollama]
url = "http://localhost:11434"
model = "llama2"
[llm.openai]
model = "gpt-4"
base_url = "https://api.openai.com/v1"
[llm.anthropic]
model = "claude-3-sonnet-20240229"
[llm.kimi]
model = "moonshot-v1-8k"
[llm.deepseek]
model = "deepseek-chat"
[llm.openrouter]
model = "openai/gpt-4"
[commit]
format = "conventional"
auto_generate = true
allow_empty = false
gpg_sign = false
max_subject_length = 100
require_scope = false
require_body = false
body_required_types = ["feat", "fix"]
[tag]
version_prefix = "v"
auto_generate = true
gpg_sign = false
include_changelog = true
[changelog]
path = "CHANGELOG.md"
auto_generate = true
format = "keep-a-changelog"
include_hashes = false
include_authors = false
group_by_type = true
[theme]
colors = true
icons = true
date_format = "%Y-%m-%d"
[repo_profiles]
"/path/to/work/project" = "work"
"/path/to/personal/project" = "personal"
```
## 环境变量
| 变量名 | 说明 |
|--------|------|
| `QUICOMMIT_CONFIG` | 配置文件路径 |
| `EDITOR` | 默认编辑器 |
| `NO_COLOR` | 禁用彩色输出 |
## 故障排除
```bash
# 查看当前配置
quicommit config list
# 显示配置详情
quicommit config show
# 编辑配置文件
quicommit config edit
# 设置配置值
quicommit config set llm.provider ollama
# 获取配置值
quicommit config get llm.provider
# 测试LLM连接
quicommit config test-llm
# 列出可用模型
quicommit config list-models
# 导出配置
quicommit config export -o config-backup.toml
# 导入配置
quicommit config import -i config-backup.toml
# 重置配置
quicommit config reset --force
```
## 贡献
欢迎贡献代码!请遵循以下步骤:
### 提交Pull Request
1. Fork本仓库
2. 创建功能分支:`git checkout -b feature/your-feature`
3. 提交变更:`git commit -m 'feat: 添加新功能'`
4. 推送分支:`git push origin feature/your-feature`
5. 提交Pull Request
### 开发环境
```bash
# 克隆仓库
git clone https://git.lyz.one/SidneyZhang/QuiCommit.git
cd QuiCommit
# 安装依赖
cargo fetch
# 开发模式运行
cargo run -- commit --help
# 运行测试
cargo test
# 代码检查
cargo clippy
cargo fmt --check
```
### 代码规范
- 遵循Rust官方代码风格运行 `cargo fmt`
- 提交信息使用Conventional Commits格式
- 新增功能应添加测试
- 运行 `cargo clippy` 确保无警告
### 项目结构
```
src/
├── commands/ # CLI命令实现
│ ├── commit.rs
│ ├── tag.rs
│ ├── changelog.rs
│ ├── profile.rs
│ ├── config.rs
│ └── init.rs
├── config/ # 配置管理
│ ├── manager.rs
│ └── profile.rs
├── generator/ # AI内容生成
├── git/ # Git操作封装
│ ├── commit.rs
│ ├── tag.rs
│ └── changelog.rs
├── llm/ # LLM提供商实现
│ ├── ollama.rs
│ ├── openai.rs
│ ├── anthropic.rs
│ ├── kimi.rs
│ ├── deepseek.rs
│ └── openrouter.rs
├── i18n/ # 国际化支持
│ ├── messages.rs
│ └── translator.rs
├── utils/ # 工具函数
│ ├── validators.rs
│ ├── formatter.rs
│ ├── crypto.rs
│ └── editor.rs
└── main.rs # 程序入口
```
## 许可证
MIT License