-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
erguotou
committed
Dec 31, 2024
1 parent
0dae9e6
commit f024ef8
Showing
6 changed files
with
516 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
@cli @core 请咨询阅读这2个包提供的功能,并帮我在 @doc 目录中生成对应的文档。 | ||
已知cli+core是由napi-rs项目构建的,提供整合git工作流的能力,doc目录是由基于astro的starlight文档框架 | ||
要求文档由浅入深,先让用户看到它的基本使用,再使用其它单独的章节详细介绍某个功能,文档中适当使用emoji来丰富内容,文字要求浅显易懂 | ||
已知starlight提供了很多有用的组件来优化文章显示,包括Cards, Link Cards显示外部跳转链接, Card Grids显示多个Card, Asides作为Note, Badge, Code可显示多个文件, File Tree显示文件树, Icons, Link Buttons, Steps, Tabs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
--- | ||
title: AI 提交功能 | ||
description: 深入了解 igit 的 AI 提交功能 | ||
--- | ||
|
||
import { Steps, Aside } from '@astrojs/starlight/components'; | ||
|
||
## 功能介绍 🤖 | ||
|
||
igit 的 AI 提交功能使用先进的 AI 模型来分析你的代码变更,自动生成符合[约定式提交](https://www.conventionalcommits.org/zh-hans/)规范的提交信息。这不仅能节省你的时间,还能确保提交信息的质量和一致性。 | ||
|
||
## 工作原理 ⚙️ | ||
|
||
<Steps> | ||
|
||
1. **收集变更** | ||
|
||
当你运行 `igit commit` 时,igit 会收集当前的 Git 暂存区(staged)中的所有变更。 | ||
|
||
2. **分析变更** | ||
|
||
AI 模型会分析这些变更,包括: | ||
- 修改的文件类型 | ||
- 代码的增删改内容 | ||
- 变更的上下文 | ||
|
||
3. **生成提交信息** | ||
|
||
基于分析结果,AI 会生成一个符合约定式提交规范的提交信息,包括: | ||
- 类型(feat/fix/docs 等) | ||
- 作用域(可选) | ||
- 描述 | ||
- 详细说明(如果需要) | ||
|
||
4. **确认提交** | ||
|
||
你可以选择接受或修改生成的提交信息。 | ||
|
||
</Steps> | ||
|
||
## 使用方法 📝 | ||
|
||
### 基本使用 | ||
|
||
```bash | ||
# 生成提交信息并等待确认 | ||
igit commit | ||
|
||
# 生成提交信息并直接提交 | ||
igit commit -y | ||
``` | ||
|
||
### 提交类型 | ||
|
||
AI 会根据变更内容自动选择最合适的提交类型: | ||
|
||
- `feat`: 新功能 | ||
- `fix`: 修复 bug | ||
- `docs`: 文档更新 | ||
- `style`: 代码格式修改 | ||
- `refactor`: 代码重构 | ||
- `perf`: 性能优化 | ||
- `test`: 测试相关 | ||
- `chore`: 构建过程或辅助工具的变动 | ||
|
||
<Aside type="tip"> | ||
AI 会尽可能准确地选择提交类型,但你也可以在确认阶段修改它。 | ||
</Aside> | ||
|
||
## 最佳实践 💡 | ||
|
||
### 1. 保持变更聚焦 | ||
|
||
每次提交只包含相关的变更,这样 AI 能更准确地理解你的意图。 | ||
|
||
### 2. 使用暂存区 | ||
|
||
确保将要提交的文件都已经添加到暂存区: | ||
|
||
```bash | ||
git add <files> | ||
igit commit | ||
``` | ||
|
||
### 3. 审查生成的信息 | ||
|
||
虽然 AI 通常能生成高质量的提交信息,但最好还是快速审查一下,确保它准确反映了你的意图。 | ||
|
||
## 常见问题 ❓ | ||
|
||
### Q: 为什么有时候生成的提交信息不够准确? | ||
|
||
A: 这可能是因为: | ||
- 变更内容过于复杂或分散 | ||
- 暂存区包含了不相关的变更 | ||
- AI 模型无法完全理解特定的业务上下文 | ||
|
||
### Q: 如何改进生成的提交信息质量? | ||
|
||
1. 确保每次提交的变更都是相关的 | ||
2. 在配置文件中使用更强大的 AI 模型(如 GPT-4) | ||
3. 提供更多的上下文信息 | ||
|
||
## 配置选项 ⚙️ | ||
|
||
在 `.config/igit.yaml` 中可以自定义 AI 提交功能: | ||
|
||
```yaml | ||
ai: | ||
# 是否启用 AI 提交功能,默认关闭 | ||
enabled: true | ||
# Base URL,默认使用OpenAI的API | ||
baseUrl: https://api.deepseek.com | ||
# 选择 AI 模型 | ||
model: gpt-4 | ||
# 响应语言,默认中文 | ||
respondIn: 中文 | ||
# API Key,请不要将API Key直接写入配置文件,请使用环境变量 OPENAI_API_KEY=xxxxx来设置 | ||
# apiKey: xxxxx | ||
``` | ||
|
||
<Aside type="caution"> | ||
请不要将 API Key 直接写在配置文件中,建议使用环境变量 `OPENAI_API_KEY` 来设置。 | ||
</Aside> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
--- | ||
title: 配置指南 | ||
description: 了解如何配置 igit 以满足你的需求 | ||
--- | ||
|
||
import { Aside } from '@astrojs/starlight/components'; | ||
|
||
## 配置文件 | ||
|
||
igit 使用 `.config/igit.yaml` 作为配置文件。当你运行 `igit init` 时,会自动创建一个默认的配置文件。 | ||
|
||
### 基本配置结构 | ||
|
||
```yaml | ||
# Git Hooks 配置 | ||
hooks: | ||
# 是否启用 hooks | ||
enabled: true | ||
# hooks 配置 | ||
hooks: | ||
# pre-commit hook 配置 | ||
pre-commit: | ||
- lint-staged | ||
- npm test | ||
# commit-msg hook 配置 | ||
commit-msg: | ||
- npx commitlint --edit | ||
# pre-push hook 配置 | ||
pre-push: | ||
- npm test | ||
|
||
# 暂存区 hooks 配置 | ||
staged_hooks: | ||
# 是否启用暂存区 hooks | ||
enabled: true | ||
# 暂存区规则 | ||
rules: | ||
"*.{js,ts}": | ||
- eslint --fix | ||
- prettier --write | ||
"*.{css,less,scss}": | ||
- stylelint --fix | ||
|
||
|
||
# AI 配置 | ||
ai: | ||
# 是否启用 AI 功能 | ||
enabled: true | ||
# OpenAI API 基础 URL | ||
baseUrl: https://api.openai.com | ||
# OpenAI API Key | ||
apiKey: your-api-key | ||
# 使用的模型 | ||
model: gpt-3.5-turbo | ||
# AI 响应使用的语言 | ||
respondIn: 中文 | ||
``` | ||
## 配置项说明 | ||
### Hooks 配置 | ||
- `hooks.enabled`: 是否启用所有 Git hooks | ||
- `hooks.hooks`: 各个 hook 的具体配置,支持字符串或字符串数组形式的命令 | ||
|
||
支持的 hooks 包括: | ||
- `applypatch-msg` | ||
- `pre-applypatch` | ||
- `pre-commit` | ||
- `pre-merge-commit` | ||
- `prepare-commit-msg` | ||
- `commit-msg` | ||
- `post-commit` | ||
- `pre-rebase` | ||
- `post-checkout` | ||
- `post-merge` | ||
- `pre-push` | ||
- 等等... | ||
|
||
### 暂存区 Hooks 配置 | ||
|
||
- `staged_hooks.enabled`: 是否启用暂存区 hooks | ||
- `staged_hooks.rules`: 针对不同文件类型的处理规则 | ||
|
||
### 提交信息配置 | ||
|
||
- `commit_msg.enabled`: 是否启用提交信息检查 | ||
- `commit_msg.validTypes`: 有效的提交类型列表 | ||
- `commit_msg.prependEmoji`: 是否在提交信息前添加 emoji | ||
|
||
### AI 配置 | ||
|
||
- `ai.enabled`: 是否启用 AI 功能 | ||
- `ai.baseUrl`: OpenAI API 的基础 URL | ||
- `ai.apiKey`: OpenAI API Key | ||
- `ai.model`: 使用的 AI 模型 | ||
- `ai.respondIn`: AI 响应使用的语言 | ||
|
||
<Aside type="caution"> | ||
请不要将 API Key 直接写在配置文件中,建议使用环境变量 `OPENAI_API_KEY` 来设置。 | ||
</Aside> | ||
|
||
## 配置示例 | ||
|
||
### 配置暂存区检查 | ||
|
||
```yaml | ||
staged_hooks: | ||
enabled: true | ||
rules: | ||
"**/*.{js,ts}": | ||
- eslint --fix | ||
- prettier --write | ||
"**/*.vue": | ||
- eslint --fix | ||
- stylelint --fix | ||
"**/*.{css,scss}": | ||
- stylelint --fix | ||
``` | ||
|
||
|
||
### 配置 AI 功能 | ||
|
||
```yaml | ||
ai: | ||
enabled: true | ||
baseUrl: https://api.openai.com | ||
model: gpt-4 | ||
respondIn: 中文 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
--- | ||
title: 快速开始 | ||
description: 学习如何在你的项目中使用 igit | ||
--- | ||
|
||
import { Steps, Tabs, TabItem } from '@astrojs/starlight/components'; | ||
|
||
## 安装 | ||
|
||
<Steps> | ||
|
||
1. 首先,使用你喜欢的包管理器安装 igit: | ||
|
||
<Tabs> | ||
<TabItem label="npm"> | ||
```bash | ||
npm install -g @doremijs/igit-cli | ||
``` | ||
</TabItem> | ||
<TabItem label="yarn"> | ||
```bash | ||
yarn global add @doremijs/igit-cli | ||
``` | ||
</TabItem> | ||
<TabItem label="pnpm"> | ||
```bash | ||
pnpm add -g @doremijs/igit-cli | ||
``` | ||
</TabItem> | ||
</Tabs> | ||
|
||
2. 在你的 Git 项目中初始化 igit: | ||
|
||
```bash | ||
cd your-project | ||
igit init | ||
``` | ||
|
||
3. 安装 Git Hooks: | ||
|
||
```bash | ||
igit install | ||
``` | ||
|
||
</Steps> | ||
|
||
## 基本使用 | ||
|
||
### AI 提交信息生成 | ||
|
||
当你需要提交代码时,只需运行: | ||
|
||
```bash | ||
igit commit | ||
``` | ||
|
||
igit 会自动分析你的修改,并生成符合[约定式提交](https://www.conventionalcommits.org/zh-hans/)规范的提交信息。如果你对生成的信息满意,可以使用 `-y` 参数直接提交: | ||
|
||
```bash | ||
igit commit -y | ||
``` | ||
|
||
### Git Hooks | ||
|
||
igit 会自动安装以下 Git Hooks: | ||
|
||
- `pre-commit`: 在提交前运行代码检查并追加 emoji | ||
- `commit-msg`: 检查提交信息是否符合规范 | ||
|
||
你可以通过配置文件自定义这些 hooks 的行为。 | ||
|
||
## 下一步 | ||
|
||
- [配置指南](/guides/configuration/) - 了解如何自定义 igit | ||
- [AI 提交](/guides/ai-commit/) - 深入了解 AI 提交功能 | ||
- [Git Hooks](/guides/hooks/) - 学习如何配置和使用 Git Hooks |
Oops, something went wrong.