@zjex/git-workflow 0.2.24 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.github/workflows/deploy-docs.yml +68 -0
  2. package/.github/workflows/test.yml +24 -4
  3. package/.husky/pre-commit +17 -0
  4. package/README.md +72 -1066
  5. package/ROADMAP.md +275 -0
  6. package/dist/index.js +450 -99
  7. package/docs/.vitepress/cache/deps/_metadata.json +52 -0
  8. package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js +9719 -0
  9. package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js.map +7 -0
  10. package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js +12824 -0
  11. package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js.map +7 -0
  12. package/docs/.vitepress/cache/deps/package.json +3 -0
  13. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4505 -0
  14. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  15. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +583 -0
  16. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  17. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +1352 -0
  18. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
  19. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +1665 -0
  20. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +7 -0
  21. package/docs/.vitepress/cache/deps/vitepress___minisearch.js +1813 -0
  22. package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +7 -0
  23. package/docs/.vitepress/cache/deps/vue.js +347 -0
  24. package/docs/.vitepress/cache/deps/vue.js.map +7 -0
  25. package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-2CLQ7TTZ.js +9719 -0
  26. package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-2CLQ7TTZ.js.map +7 -0
  27. package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-LE5NDSFD.js +12824 -0
  28. package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-LE5NDSFD.js.map +7 -0
  29. package/docs/.vitepress/cache/deps_temp_44e2fb0f/package.json +3 -0
  30. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vue_devtools-api.js +4505 -0
  31. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vue_devtools-api.js.map +7 -0
  32. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_core.js +583 -0
  33. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_core.js.map +7 -0
  34. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_integrations_useFocusTrap.js +1352 -0
  35. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
  36. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___mark__js_src_vanilla__js.js +1665 -0
  37. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___mark__js_src_vanilla__js.js.map +7 -0
  38. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___minisearch.js +1813 -0
  39. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___minisearch.js.map +7 -0
  40. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vue.js +347 -0
  41. package/docs/.vitepress/cache/deps_temp_44e2fb0f/vue.js.map +7 -0
  42. package/docs/.vitepress/config.ts +167 -0
  43. package/docs/.vitepress/theme/custom.css +39 -0
  44. package/docs/.vitepress/theme/index.ts +4 -0
  45. package/docs/README.md +82 -0
  46. package/docs/commands/branch.md +468 -0
  47. package/docs/commands/commit.md +554 -0
  48. package/docs/commands/config.md +346 -0
  49. package/docs/commands/index.md +312 -0
  50. package/docs/commands/interactive.md +384 -0
  51. package/docs/commands/release.md +300 -0
  52. package/docs/commands/stash.md +309 -0
  53. package/docs/commands/tag.md +278 -0
  54. package/docs/commands/update.md +347 -0
  55. package/docs/config/ai-config.md +160 -0
  56. package/docs/config/branch-config.md +133 -0
  57. package/docs/config/commit-config.md +185 -0
  58. package/docs/config/config-file.md +776 -0
  59. package/docs/config/examples.md +279 -0
  60. package/docs/config/index.md +478 -0
  61. package/docs/features/git-wrapped.md +199 -0
  62. package/docs/guide/ai-commit.md +576 -0
  63. package/docs/guide/basic-usage.md +522 -0
  64. package/docs/guide/best-practices.md +426 -0
  65. package/docs/guide/branch-management.md +712 -0
  66. package/docs/guide/getting-started.md +294 -0
  67. package/docs/guide/index.md +168 -0
  68. package/docs/guide/installation.md +449 -0
  69. package/docs/guide/release-management.md +744 -0
  70. package/docs/guide/stash-management.md +608 -0
  71. package/docs/guide/tag-management.md +614 -0
  72. package/docs/index.md +205 -0
  73. package/docs/public/favicon.svg +21 -0
  74. package/docs/public/hero-logo.svg +43 -0
  75. package/docs/public/logo.svg +20 -0
  76. package/package.json +12 -2
  77. package/scripts/publish.js +55 -8
  78. package/scripts/publish.sh +20 -2
  79. package/scripts/release.sh +81 -3
  80. package/scripts/update-test-count.js +55 -0
  81. package/src/ai-service.ts +107 -15
  82. package/src/commands/commit.ts +4 -0
  83. package/src/commands/init.ts +18 -0
  84. package/src/commands/log.ts +503 -0
  85. package/src/config.ts +1 -0
  86. package/src/index.ts +37 -13
  87. package/src/utils.ts +10 -0
  88. package/tests/ai-service.test.ts +237 -2
  89. package/tests/init.test.ts +582 -0
  90. package/tests/log.test.ts +106 -0
  91. package/tests/release.test.ts +333 -0
  92. package/tests/setup.ts +21 -0
  93. package/tests/stash.test.ts +376 -0
  94. package/tests/update.test.ts +402 -0
  95. package/vitest.config.ts +3 -0
  96. package/zjex-logo.svg +22 -0
  97. package/zjex-optimized.svg +34 -0
  98. package/zjex.svg +1 -0
  99. package/src/commands/help.ts +0 -76
@@ -0,0 +1,554 @@
1
+ # 提交命令
2
+
3
+ 提交命令是 Git Workflow 的核心功能,支持 AI 自动生成和手动编写两种模式,让你的提交信息更规范、更准确。
4
+
5
+ ## 📋 命令概览
6
+
7
+ | 命令 | 别名 | 功能 |
8
+ | ----------- | --------------- | ------------------------------------------- |
9
+ | `gw commit` | `gw c`, `gw cm` | 交互式提交 (Conventional Commits + Gitmoji) |
10
+
11
+ ## 🚀 基本用法
12
+
13
+ ```bash
14
+ gw c
15
+ # 或
16
+ gw commit
17
+ gw cm
18
+ ```
19
+
20
+ ## 🤖 AI 自动生成模式
21
+
22
+ ### 快速体验
23
+
24
+ ```bash
25
+ gw c
26
+ 已暂存的文件:
27
+ src/auth.ts
28
+ src/login.ts
29
+ ────────────────────────────────────────
30
+ ? 选择 commit 方式:
31
+ ❯ 🤖 AI 自动生成 commit message
32
+ ✍️ 手动编写 commit message
33
+
34
+ ✔ AI 生成完成
35
+
36
+ AI 生成的 commit message:
37
+ ✨ feat(auth): 添加用户登录功能
38
+
39
+ - 实现用户名密码验证
40
+ - 添加登录状态管理
41
+ - 集成 JWT token 处理
42
+ ────────────────────────────────────────
43
+ ? 使用这个 commit message?
44
+ ❯ ✅ 使用
45
+ ❌ 不使用,切换到手动模式
46
+
47
+ ✔ 提交成功
48
+ commit: a1b2c3d
49
+ ```
50
+
51
+ ### AI 生成特点
52
+
53
+ - **⚡️ 快速** - 2-3 秒内完成分析和生成
54
+ - **🎯 准确** - 自动识别 feat/fix/docs 等提交类型
55
+ - **📝 规范** - 符合 Conventional Commits 标准
56
+ - **🇨🇳 多语言** - 支持中文和英文
57
+ - **🔄 可预览** - 生成后可预览,不满意可切换到手动模式
58
+ - **🛡️ 隐私保护** - 只分析 git diff,不上传完整代码
59
+
60
+ ### 支持的 AI 提供商
61
+
62
+ | 提供商 | 费用 | 特点 | 推荐指数 |
63
+ | ------------- | ------ | ------------------------------ | -------- |
64
+ | GitHub Models | 免费 | 每天 150 次,需要 GitHub Token | ⭐⭐⭐⭐⭐ |
65
+ | OpenAI | 付费 | 质量高,速度快 | ⭐⭐⭐⭐ |
66
+ | Claude | 付费 | 理解能力强,适合复杂变更 | ⭐⭐⭐⭐ |
67
+ | Ollama | 免费 | 本地运行,完全私有 | ⭐⭐⭐ |
68
+
69
+ ### AI 配置
70
+
71
+ 详细的 AI 配置请参考 [AI 智能提交](/guide/ai-commit) 章节。
72
+
73
+ ## ✍️ 手动编写模式
74
+
75
+ ### 交互式流程
76
+
77
+ ```bash
78
+ gw c
79
+ 已暂存的文件:
80
+ src/index.ts
81
+ src/utils.ts
82
+ ────────────────────────────────────────
83
+ ? 选择 commit 方式:
84
+ 🤖 AI 自动生成 commit message
85
+ ❯ ✍️ 手动编写 commit message
86
+
87
+ ? 选择提交类型:
88
+ ❯ ✨ feat 新功能
89
+ 🐛 fix 修复 Bug
90
+ 📝 docs 文档更新
91
+ 💄 style 代码格式 (不影响功能)
92
+ ♻️ refactor 重构 (非新功能/修复)
93
+ ⚡️ perf 性能优化
94
+ ✅ test 测试相关
95
+ 📦 build 构建/依赖相关
96
+ 👷 ci CI/CD 相关
97
+ 🔧 chore 其他杂项
98
+ ⏪ revert 回退提交
99
+
100
+ ? 输入影响范围 scope (可跳过): auth
101
+ ? 输入简短描述: add login validation
102
+ ? 输入详细描述 (可跳过):
103
+ - 添加用户名长度验证
104
+ - 添加密码强度检查
105
+ - 集成验证码功能
106
+
107
+ ? 是否包含破坏性变更 (BREAKING CHANGE)?
108
+ ❯ 否
109
+
110
+
111
+ ? 关联 Issue (如 #123, 可跳过): #42
112
+
113
+ ────────────────────────────────────────
114
+ 提交信息预览:
115
+ ✨ feat(auth): add login validation
116
+
117
+ - 添加用户名长度验证
118
+ - 添加密码强度检查
119
+ - 集成验证码功能
120
+
121
+ #42
122
+ ────────────────────────────────────────
123
+ ? 确认提交?
124
+ ❯ ✅ 确认提交
125
+ ❌ 取消
126
+
127
+ ✔ 提交成功
128
+ commit: a1b2c3d
129
+ ```
130
+
131
+ ### 提交类型详解
132
+
133
+ | 类型 | Emoji | 说明 | 示例 |
134
+ | ---------- | ----- | ------------------------------ | --------------------------------------- |
135
+ | `feat` | ✨ | 新功能 | `feat(auth): 添加用户登录功能` |
136
+ | `fix` | 🐛 | Bug 修复 | `fix(api): 修复用户数据获取失败问题` |
137
+ | `docs` | 📝 | 文档更新 | `docs: 更新 API 使用说明` |
138
+ | `style` | 💄 | 代码格式(不影响功能) | `style: 统一代码缩进格式` |
139
+ | `refactor` | ♻️ | 重构(非新功能/修复) | `refactor(utils): 优化数据处理逻辑` |
140
+ | `perf` | ⚡️ | 性能优化 | `perf(db): 优化数据库查询性能` |
141
+ | `test` | ✅ | 测试相关 | `test: 添加用户认证单元测试` |
142
+ | `build` | 📦 | 构建/依赖相关 | `build: 升级 webpack 到 5.0` |
143
+ | `ci` | 👷 | CI/CD 相关 | `ci: 添加自动部署脚本` |
144
+ | `chore` | 🔧 | 其他杂项 | `chore: 更新依赖版本` |
145
+ | `revert` | ⏪ | 回退提交 | `revert: 回退用户认证功能` |
146
+
147
+ ### 提交信息格式
148
+
149
+ 遵循 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/) 规范:
150
+
151
+ ```
152
+ <type>[optional scope]: <description>
153
+
154
+ [optional body]
155
+
156
+ [optional footer(s)]
157
+ ```
158
+
159
+ **示例:**
160
+
161
+ ```
162
+ ✨ feat(auth): 添加用户登录功能
163
+
164
+ - 实现用户名密码验证
165
+ - 添加登录状态管理
166
+ - 集成 JWT token 处理
167
+
168
+ BREAKING CHANGE: 移除了旧的认证 API
169
+ Closes #123
170
+ ```
171
+
172
+ ### 破坏性变更
173
+
174
+ 当代码包含不兼容的 API 变更时,需要标记为破坏性变更:
175
+
176
+ ```bash
177
+ ? 是否包含破坏性变更 (BREAKING CHANGE)?
178
+ ❯ 是
179
+
180
+ ? 描述破坏性变更:
181
+ 移除了 getUserInfo() 方法,请使用 getUser() 替代
182
+ ```
183
+
184
+ 生成的提交信息:
185
+ ```
186
+ ✨ feat(api): 重构用户信息接口
187
+
188
+ BREAKING CHANGE: 移除了 getUserInfo() 方法,请使用 getUser() 替代
189
+ ```
190
+
191
+ ## 📁 文件暂存处理
192
+
193
+ ### 自动暂存模式
194
+
195
+ 如果配置了 `autoStage: true`(默认),Git Workflow 会自动暂存所有更改:
196
+
197
+ ```bash
198
+ gw c
199
+ 没有暂存的更改
200
+ ────────────────────────────────────────
201
+ 未暂存的文件:
202
+ M src/index.ts
203
+ M src/utils.ts
204
+ ?? src/new-file.ts
205
+ ────────────────────────────────────────
206
+ ✔ 已自动暂存所有更改
207
+ ```
208
+
209
+ ### 手动选择模式
210
+
211
+ 如果配置了 `autoStage: false`,可以手动选择要暂存的文件:
212
+
213
+ ```bash
214
+ gw c
215
+ 没有暂存的更改
216
+ ────────────────────────────────────────
217
+ 未暂存的文件:
218
+ M src/index.ts
219
+ M src/utils.ts
220
+ ?? src/new-file.ts
221
+ ────────────────────────────────────────
222
+ ? 选择要暂存的文件: (使用空格选择)
223
+ ❯ ◉ M src/index.ts
224
+ ◉ M src/utils.ts
225
+ ◯ ?? src/new-file.ts
226
+
227
+ ✔ 已暂存 2 个文件
228
+ ```
229
+
230
+ **操作说明:**
231
+ - **方向键** - 上下移动光标
232
+ - **空格键** - 选择/取消选择文件
233
+ - **回车键** - 确认选择
234
+ - **a 键** - 全选/取消全选
235
+
236
+ ### 已暂存文件显示
237
+
238
+ 如果已经有暂存的文件,会直接显示:
239
+
240
+ ```bash
241
+ gw c
242
+ 已暂存的文件:
243
+ src/auth.ts
244
+ src/login.ts
245
+ src/types.ts
246
+ ────────────────────────────────────────
247
+ ? 选择 commit 方式:
248
+ ❯ 🤖 AI 自动生成 commit message
249
+ ✍️ 手动编写 commit message
250
+ ```
251
+
252
+ ## ⚙️ 配置选项
253
+
254
+ ### 基础配置
255
+
256
+ ```json
257
+ {
258
+ "autoStage": true,
259
+ "useEmoji": true
260
+ }
261
+ ```
262
+
263
+ | 配置项 | 类型 | 默认值 | 说明 |
264
+ | ----------- | --------- | ------ | ----------------------------- |
265
+ | `autoStage` | `boolean` | `true` | commit 时是否自动暂存所有更改 |
266
+ | `useEmoji` | `boolean` | `true` | commit 时是否使用 emoji |
267
+
268
+ ### 自定义 Emoji
269
+
270
+ ```json
271
+ {
272
+ "commitEmojis": {
273
+ "feat": "🎉",
274
+ "fix": "🔧",
275
+ "docs": "📚",
276
+ "style": "🎨",
277
+ "refactor": "🔨",
278
+ "perf": "🚀",
279
+ "test": "🧪",
280
+ "build": "📦",
281
+ "ci": "👷",
282
+ "chore": "🔧",
283
+ "revert": "⏪"
284
+ }
285
+ }
286
+ ```
287
+
288
+ ### AI 配置
289
+
290
+ ```json
291
+ {
292
+ "aiCommit": {
293
+ "enabled": true,
294
+ "provider": "github",
295
+ "apiKey": "ghp_xxxxxxxxxxxx",
296
+ "model": "gpt-4o-mini",
297
+ "language": "zh-CN",
298
+ "maxTokens": 200
299
+ }
300
+ }
301
+ ```
302
+
303
+ 详细配置请参考 [AI 配置](/config/ai-config) 章节。
304
+
305
+ ## 🎯 使用场景
306
+
307
+ ### 场景一:功能开发
308
+
309
+ ```bash
310
+ # 开发新功能
311
+ # 修改了 src/auth.ts, src/login.tsx
312
+
313
+ gw c
314
+ # 选择 AI 模式
315
+ # AI 生成: ✨ feat(auth): 添加用户登录功能
316
+ ```
317
+
318
+ ### 场景二:Bug 修复
319
+
320
+ ```bash
321
+ # 修复登录问题
322
+ # 修改了 src/auth.ts
323
+
324
+ gw c
325
+ # 选择 AI 模式
326
+ # AI 生成: 🐛 fix(auth): 修复登录验证失败问题
327
+ ```
328
+
329
+ ### 场景三:文档更新
330
+
331
+ ```bash
332
+ # 更新 README.md
333
+
334
+ gw c
335
+ # 选择手动模式
336
+ # 类型: docs
337
+ # 描述: 更新安装说明
338
+ # 生成: 📝 docs: 更新安装说明
339
+ ```
340
+
341
+ ### 场景四:重构代码
342
+
343
+ ```bash
344
+ # 重构工具函数
345
+ # 修改了 src/utils.ts
346
+
347
+ gw c
348
+ # 选择 AI 模式
349
+ # AI 生成: ♻️ refactor(utils): 优化数据处理函数
350
+ ```
351
+
352
+ ### 场景五:破坏性变更
353
+
354
+ ```bash
355
+ # 重构 API 接口
356
+ # 修改了 src/api.ts
357
+
358
+ gw c
359
+ # 选择手动模式
360
+ # 类型: feat
361
+ # 范围: api
362
+ # 描述: 重构用户接口
363
+ # 破坏性变更: 是
364
+ # 描述: 移除了 getUserInfo 方法
365
+ # 生成: ✨ feat(api): 重构用户接口
366
+ # BREAKING CHANGE: 移除了 getUserInfo 方法
367
+ ```
368
+
369
+ ## 🔧 高级技巧
370
+
371
+ ### 技巧一:分批提交
372
+
373
+ 将大的变更拆分成多个小的、逻辑清晰的提交:
374
+
375
+ ```bash
376
+ # 只暂存认证相关文件
377
+ git add src/auth.ts src/types/auth.ts
378
+ gw c
379
+ # AI 生成: ✨ feat(auth): 添加用户认证逻辑
380
+
381
+ # 再暂存 UI 相关文件
382
+ git add src/components/Login.tsx
383
+ gw c
384
+ # AI 生成: ✨ feat(ui): 添加登录界面组件
385
+ ```
386
+
387
+ ### 技巧二:使用 scope 组织代码
388
+
389
+ 通过 scope 明确变更的模块:
390
+
391
+ ```bash
392
+ # 数据库相关
393
+ gw c
394
+ # scope: db
395
+ # 生成: ✨ feat(db): 添加用户表结构
396
+
397
+ # API 相关
398
+ gw c
399
+ # scope: api
400
+ # 生成: ✨ feat(api): 添加用户接口
401
+
402
+ # UI 相关
403
+ gw c
404
+ # scope: ui
405
+ # 生成: ✨ feat(ui): 添加用户界面
406
+ ```
407
+
408
+ ### 技巧三:关联 Issue
409
+
410
+ 将提交与 Issue 关联,便于追踪:
411
+
412
+ ```bash
413
+ gw c
414
+ # 关联 Issue: #123
415
+ # 生成: ✨ feat(auth): 添加用户登录功能
416
+ #
417
+ # #123
418
+ ```
419
+
420
+ **支持的关键词:**
421
+ - `Closes #123` - 关闭 Issue
422
+ - `Fixes #123` - 修复 Issue
423
+ - `Resolves #123` - 解决 Issue
424
+ - `#123` - 引用 Issue
425
+
426
+ ### 技巧四:多行描述
427
+
428
+ 对于复杂的变更,添加详细描述:
429
+
430
+ ```bash
431
+ gw c
432
+ # 详细描述:
433
+ # - 实现用户名密码验证
434
+ # - 添加记住登录状态功能
435
+ # - 集成第三方登录(Google, GitHub)
436
+ # - 添加登录失败重试机制
437
+ ```
438
+
439
+ ### 技巧五:AI 生成后微调
440
+
441
+ AI 生成的提交信息可以作为基础,然后手动微调:
442
+
443
+ ```bash
444
+ gw c
445
+ # AI 生成: ✨ feat(auth): 添加用户登录功能
446
+ # 选择 "❌ 不使用,切换到手动模式"
447
+ # 在 AI 生成的基础上进行微调
448
+ ```
449
+
450
+ ## 🚨 常见问题
451
+
452
+ ### 问题一:没有暂存的文件
453
+
454
+ ```bash
455
+ gw c
456
+ ❌ 没有暂存的更改,也没有未暂存的更改
457
+ ```
458
+
459
+ **解决方案:**
460
+ 1. 确认是否有文件修改:`git status`
461
+ 2. 手动暂存文件:`git add .`
462
+ 3. 或者先修改文件再提交
463
+
464
+ ### 问题二:AI 生成失败
465
+
466
+ ```bash
467
+ ❌ AI 生成失败: API key invalid
468
+ ```
469
+
470
+ **解决方案:**
471
+ 1. 检查 AI 配置是否正确
472
+ 2. 验证 API key 是否有效
473
+ 3. 检查网络连接
474
+ 4. 切换到手动模式
475
+
476
+ ### 问题三:提交信息过长
477
+
478
+ ```bash
479
+ ⚠️ 提交信息标题过长,建议控制在 50 字符以内
480
+ ```
481
+
482
+ **解决方案:**
483
+ 1. 简化描述,突出核心变更
484
+ 2. 将详细信息放到 body 部分
485
+ 3. 使用更精确的动词
486
+
487
+ ### 问题四:emoji 显示异常
488
+
489
+ ```bash
490
+ # 显示为方块或问号
491
+ □ feat(auth): 添加用户登录功能
492
+ ```
493
+
494
+ **解决方案:**
495
+ 1. 确保终端支持 Unicode
496
+ 2. 安装支持 emoji 的字体
497
+ 3. 或在配置中禁用 emoji:
498
+ ```json
499
+ {
500
+ "useEmoji": false
501
+ }
502
+ ```
503
+
504
+ ### 问题五:暂存区冲突
505
+
506
+ ```bash
507
+ ❌ 暂存区存在冲突,请先解决冲突
508
+ ```
509
+
510
+ **解决方案:**
511
+ 1. 查看冲突文件:`git status`
512
+ 2. 解决冲突后重新暂存:`git add .`
513
+ 3. 然后再次提交:`gw c`
514
+
515
+ ## 📊 提交质量度量
516
+
517
+ ### 好的提交信息特征
518
+
519
+ - ✅ **类型明确** - 使用正确的提交类型
520
+ - ✅ **描述清晰** - 简洁明了地描述变更内容
521
+ - ✅ **范围明确** - 使用 scope 指明影响范围
522
+ - ✅ **格式规范** - 遵循 Conventional Commits 格式
523
+ - ✅ **关联明确** - 关联相关的 Issue 或 PR
524
+
525
+ ### 提交信息示例
526
+
527
+ **优秀示例:**
528
+ ```
529
+ ✨ feat(auth): 添加 OAuth2 登录支持
530
+
531
+ - 集成 Google OAuth2 认证
532
+ - 添加用户信息自动同步
533
+ - 支持登录状态持久化
534
+
535
+ Closes #123
536
+ ```
537
+
538
+ **需要改进的示例:**
539
+ ```
540
+ fix bug # 太模糊,不知道修复了什么
541
+ update code # 没有说明更新了什么
542
+ feat: new stuff # 描述不清晰
543
+ ```
544
+
545
+ ## 📚 相关命令
546
+
547
+ - [**gw f**](/commands/branch#创建-feature-分支) - 创建功能分支
548
+ - [**gw s**](/commands/stash) - 管理代码暂存
549
+ - [**gw t**](/commands/tag) - 创建版本标签
550
+ - [**gw r**](/commands/release) - 发布版本
551
+
552
+ ---
553
+
554
+ 通过 Git Workflow 的提交命令,你可以轻松创建规范、准确的提交信息。无论是使用 AI 自动生成还是手动编写,都能确保提交历史的清晰和可追溯性。