@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,522 @@
1
+ # 基础用法
2
+
3
+ 本指南介绍 Git Workflow 的基础用法,帮助你快速掌握日常开发中最常用的功能。
4
+
5
+ ## 🎯 核心工作流程
6
+
7
+ Git Workflow 的核心理念是简化 Git 操作,让你专注于代码开发。基本工作流程如下:
8
+
9
+ ```mermaid
10
+ graph LR
11
+ A[创建分支] --> B[开发代码]
12
+ B --> C[提交代码]
13
+ C --> D[创建标签]
14
+ D --> E[清理分支]
15
+ ```
16
+
17
+ ## 📋 交互式菜单
18
+
19
+ ### 启动主菜单
20
+
21
+ ```bash
22
+ gw
23
+ ```
24
+
25
+ 你会看到优雅的主菜单:
26
+
27
+ ```
28
+ ███████╗ ██╗███████╗██╗ ██╗
29
+ ╚══███╔╝ ██║██╔════╝╚██╗██╔╝
30
+ ███╔╝ ██║█████╗ ╚███╔╝
31
+ ███╔╝ ██ ██║██╔══╝ ██╔██╗
32
+ ███████╗╚█████╔╝███████╗██╔╝ ██╗
33
+ ╚══════╝ ╚════╝ ╚══════╝╚═╝ ╚═╝
34
+
35
+ git-workflow v0.2.24
36
+
37
+ ? 选择操作:
38
+ [1] ✨ 创建 feature 分支 gw f
39
+ [2] 🐛 创建 hotfix 分支 gw h
40
+ [3] 🗑️ 删除分支 gw d
41
+ [4] 📝 提交代码 gw c
42
+ [5] 🏷️ 创建 tag gw t
43
+ [6] 🗑️ 删除 tag gw td
44
+ [7] ✏️ 修改 tag gw tu
45
+ [8] 📋 列出 tags gw ts
46
+ [9] 📦 发布版本 gw r
47
+ [a] 💾 管理 stash gw s
48
+ [b] ⚙️ 初始化配置 gw init
49
+ [0] ❓ 帮助
50
+ [q] 退出
51
+ ```
52
+
53
+ ### 菜单操作
54
+
55
+ - **数字键** - 选择对应功能
56
+ - **字母键** - 选择对应功能(a, b)
57
+ - **方向键** - 上下移动选择
58
+ - **回车键** - 确认选择
59
+ - **q 键** - 退出程序
60
+ - **Ctrl+C** - 优雅退出
61
+
62
+ ## 🌿 分支管理基础
63
+
64
+ ### 创建 Feature 分支
65
+
66
+ ```bash
67
+ gw f
68
+ ```
69
+
70
+ **交互流程:**
71
+ ```bash
72
+ ? 请输入 Story ID (可跳过): PROJ-123
73
+ ? 请输入描述: add-user-profile
74
+ ✔ 分支创建成功: feature/20260111-PROJ-123-add-user-profile
75
+ ? 是否推送到远程? 是
76
+ ✔ 已推送到远程
77
+ ```
78
+
79
+ **生成的分支名格式:**
80
+ ```
81
+ feature/YYYYMMDD-[ID-]description
82
+ ```
83
+
84
+ ### 创建 Hotfix 分支
85
+
86
+ ```bash
87
+ gw h
88
+ ```
89
+
90
+ 用于紧急修复生产环境问题:
91
+
92
+ ```bash
93
+ ? 请输入 Issue ID (可跳过): BUG-456
94
+ ? 请输入描述: fix-login-crash
95
+ ✔ 分支创建成功: hotfix/20260111-BUG-456-fix-login-crash
96
+ ```
97
+
98
+ ### 删除分支
99
+
100
+ ```bash
101
+ gw d
102
+ ```
103
+
104
+ **智能分支列表:**
105
+ ```bash
106
+ ? 选择要删除的分支:
107
+ ❯ feature/20260105-old-feature (本地+远程) 3 days ago
108
+ feature/20260103-test (仅本地) 5 days ago
109
+ 取消
110
+ ```
111
+
112
+ - 按最近使用时间排序
113
+ - 显示本地/远程状态
114
+ - 自动检测并删除远程分支
115
+
116
+ ## 📝 代码提交基础
117
+
118
+ ### AI 智能提交(推荐)
119
+
120
+ ```bash
121
+ gw c
122
+ ```
123
+
124
+ **AI 模式流程:**
125
+ ```bash
126
+ 已暂存的文件:
127
+ src/auth.ts
128
+ src/login.ts
129
+ ────────────────────────────────────────
130
+ ? 选择 commit 方式:
131
+ ❯ 🤖 AI 自动生成 commit message
132
+ ✍️ 手动编写 commit message
133
+
134
+ ✔ AI 生成完成
135
+
136
+ AI 生成的 commit message:
137
+ ✨ feat(auth): 添加用户登录功能
138
+ ────────────────────────────────────────
139
+ ? 使用这个 commit message?
140
+ ❯ ✅ 使用
141
+ ❌ 不使用,切换到手动模式
142
+
143
+ ✔ 提交成功
144
+ ```
145
+
146
+ ### 手动提交模式
147
+
148
+ 如果选择手动模式或 AI 不可用:
149
+
150
+ ```bash
151
+ ? 选择提交类型:
152
+ ❯ ✨ feat 新功能
153
+ 🐛 fix 修复 Bug
154
+ 📝 docs 文档更新
155
+ 💄 style 代码格式
156
+ ♻️ refactor 重构
157
+ ⚡️ perf 性能优化
158
+ ✅ test 测试相关
159
+ 📦 build 构建相关
160
+ 👷 ci CI/CD 相关
161
+ 🔧 chore 其他杂项
162
+ ⏪ revert 回退提交
163
+
164
+ ? 输入影响范围 scope (可跳过): auth
165
+ ? 输入简短描述: add login validation
166
+ ```
167
+
168
+ ### 文件暂存处理
169
+
170
+ **自动暂存模式(默认):**
171
+ ```bash
172
+ gw c
173
+ 没有暂存的更改
174
+ ────────────────────────────────────────
175
+ 未暂存的文件:
176
+ M src/index.ts
177
+ M src/utils.ts
178
+ ────────────────────────────────────────
179
+ ✔ 已自动暂存所有更改
180
+ ```
181
+
182
+ **手动选择模式:**
183
+ ```bash
184
+ ? 选择要暂存的文件: (使用空格选择)
185
+ ❯ ◉ M src/index.ts
186
+ ◉ M src/utils.ts
187
+ ◯ ?? src/new-file.ts
188
+ ```
189
+
190
+ ## 🏷️ 版本标签基础
191
+
192
+ ### 创建版本标签
193
+
194
+ ```bash
195
+ gw t
196
+ ```
197
+
198
+ **智能版本检测:**
199
+ ```bash
200
+ ? 选择 tag 前缀: v (最新: v1.2.0)
201
+ ? 选择版本类型:
202
+ ❯ patch → v1.2.1
203
+ minor → v1.3.0
204
+ major → v2.0.0
205
+ alpha → v1.2.1-alpha.1
206
+ beta → v1.2.1-beta.1
207
+ rc → v1.2.1-rc.1
208
+
209
+ ✔ Tag 创建成功: v1.2.1
210
+ ✔ Tag 已推送: v1.2.1
211
+ ```
212
+
213
+ ### 版本类型说明
214
+
215
+ | 类型 | 说明 | 示例变化 |
216
+ | ------- | ------------------------ | --------------- |
217
+ | patch | 修复 Bug,向下兼容 | 1.2.0 → 1.2.1 |
218
+ | minor | 新功能,向下兼容 | 1.2.0 → 1.3.0 |
219
+ | major | 破坏性变更,不向下兼容 | 1.2.0 → 2.0.0 |
220
+ | alpha | 内测版本 | 1.2.1-alpha.1 |
221
+ | beta | 公测版本 | 1.2.1-beta.1 |
222
+ | rc | 候选发布版本 | 1.2.1-rc.1 |
223
+
224
+ ### 列出现有标签
225
+
226
+ ```bash
227
+ gw ts
228
+ ```
229
+
230
+ **按前缀过滤:**
231
+ ```bash
232
+ gw ts v # 只显示 v 开头的标签
233
+ gw ts release # 只显示 release 开头的标签
234
+ ```
235
+
236
+ ### 删除标签
237
+
238
+ ```bash
239
+ gw td
240
+ ```
241
+
242
+ **安全删除流程:**
243
+ ```bash
244
+ ? 选择要删除的 tag:
245
+ ❯ v1.2.0 (2 days ago)
246
+ v1.1.0 (1 week ago)
247
+
248
+ ? 确认删除 tag v1.2.0?
249
+ ❯ 是,删除本地和远程
250
+ 仅删除本地
251
+ 取消
252
+ ```
253
+
254
+ ## 💾 Stash 管理基础
255
+
256
+ ### 查看和管理 Stash
257
+
258
+ ```bash
259
+ gw s
260
+ ```
261
+
262
+ **可视化 Stash 列表:**
263
+ ```bash
264
+ 共 3 个 stash:
265
+
266
+ ? 选择 stash:
267
+ ❯ [0] main fix login bug (3 文件) 2 hours ago
268
+ [1] develop add feature (5 文件) 1 day ago
269
+ [2] main WIP (1 文件) 3 days ago
270
+ + 创建新 stash
271
+ 取消
272
+ ```
273
+
274
+ ### Stash 操作
275
+
276
+ 选择 stash 后可以进行以下操作:
277
+
278
+ ```bash
279
+ ? 操作:
280
+ ❯ 应用 (保留 stash)
281
+ 弹出 (应用并删除)
282
+ 创建分支
283
+ 查看差异
284
+ 删除
285
+ 返回列表
286
+ ```
287
+
288
+ ### 创建新 Stash
289
+
290
+ ```bash
291
+ gw s
292
+ # 选择 "+ 创建新 stash"
293
+
294
+ ? 检测到未跟踪的文件,是否一并 stash?
295
+ ❯ 是 (包含未跟踪文件)
296
+ 否 (仅已跟踪文件)
297
+
298
+ ? Stash 消息 (可跳过): 临时保存登录功能开发进度
299
+
300
+ ✔ Stash 创建成功
301
+ ```
302
+
303
+ ## 📦 版本发布基础
304
+
305
+ ### 更新 package.json 版本
306
+
307
+ ```bash
308
+ gw r
309
+ ```
310
+
311
+ **版本选择:**
312
+ ```bash
313
+ 当前版本: 0.2.24
314
+ ? 选择新版本:
315
+ ❯ patch → 0.2.25
316
+ minor → 0.3.0
317
+ major → 1.0.0
318
+ alpha → 0.2.25-alpha.1
319
+ beta → 0.2.25-beta.1
320
+ rc → 0.2.25-rc.1
321
+
322
+ ✔ 版本号已更新: 0.2.24 → 0.2.25
323
+ ```
324
+
325
+ ## ⚙️ 基础配置
326
+
327
+ ### 初始化配置
328
+
329
+ ```bash
330
+ gw init
331
+ ```
332
+
333
+ **配置选择:**
334
+ ```bash
335
+ ? 选择配置范围:
336
+ ❯ 全局配置(所有项目生效)
337
+ 项目配置(仅当前项目)
338
+ ```
339
+
340
+ ### 常用配置项
341
+
342
+ **全局配置示例:**
343
+ ```json
344
+ {
345
+ "autoStage": true,
346
+ "useEmoji": true,
347
+ "aiCommit": {
348
+ "enabled": true,
349
+ "provider": "github",
350
+ "language": "zh-CN"
351
+ }
352
+ }
353
+ ```
354
+
355
+ **项目配置示例:**
356
+ ```json
357
+ {
358
+ "requireId": true,
359
+ "featureIdLabel": "Story ID",
360
+ "autoPush": true,
361
+ "baseBranch": "develop"
362
+ }
363
+ ```
364
+
365
+ ## 🔄 工具更新
366
+
367
+ ### 检查和更新
368
+
369
+ ```bash
370
+ gw upt
371
+ ```
372
+
373
+ **更新流程:**
374
+ ```bash
375
+ 🔍 检查更新...
376
+
377
+ 🎉 发现新版本!
378
+ 0.2.24 → 0.2.25
379
+
380
+ ✔ 更新成功!
381
+ 请重新打开终端使用新版本
382
+ ```
383
+
384
+ ## 🎯 日常开发示例
385
+
386
+ ### 完整的功能开发流程
387
+
388
+ ```bash
389
+ # 1. 创建功能分支
390
+ gw f
391
+ # 输入: PROJ-123, add-user-dashboard
392
+
393
+ # 2. 开发代码...
394
+ # 修改文件,添加功能
395
+
396
+ # 3. 提交代码
397
+ gw c
398
+ # AI 生成: ✨ feat(dashboard): 添加用户仪表板功能
399
+
400
+ # 4. 继续开发和提交...
401
+ gw c
402
+ # AI 生成: 🐛 fix(dashboard): 修复数据加载问题
403
+
404
+ # 5. 功能完成,创建版本标签
405
+ gw t
406
+ # 选择: minor → v1.3.0
407
+
408
+ # 6. 合并到主分支后,清理功能分支
409
+ gw d
410
+ # 选择并删除已合并的功能分支
411
+ ```
412
+
413
+ ### 紧急修复流程
414
+
415
+ ```bash
416
+ # 1. 创建 hotfix 分支
417
+ gw h
418
+ # 输入: BUG-456, fix-payment-error
419
+
420
+ # 2. 修复问题
421
+ # 修改相关文件
422
+
423
+ # 3. 提交修复
424
+ gw c
425
+ # AI 生成: 🐛 fix(payment): 修复支付金额计算错误
426
+
427
+ # 4. 创建补丁版本
428
+ gw t
429
+ # 选择: patch → v1.2.1
430
+
431
+ # 5. 合并到主分支和开发分支后,删除 hotfix 分支
432
+ gw d
433
+ ```
434
+
435
+ ## 🎨 界面特性
436
+
437
+ ### 颜色编码
438
+
439
+ - 🟢 **绿色** - 成功信息、分支名
440
+ - 🟡 **黄色** - 警告信息、版本号
441
+ - 🔴 **红色** - 错误信息
442
+ - 🔵 **蓝色** - 链接、命令
443
+ - ⚪ **灰色** - 辅助信息、时间
444
+
445
+ ### 键盘操作
446
+
447
+ | 按键 | 功能 |
448
+ | ---------- | ------------------------ |
449
+ | ↑/↓ | 上下选择选项 |
450
+ | 空格 | 选择/取消选择(多选模式) |
451
+ | 回车 | 确认选择 |
452
+ | Ctrl+C | 优雅退出 |
453
+ | q | 退出(在主菜单中) |
454
+
455
+ ### 搜索和过滤
456
+
457
+ 在长列表中可以输入关键词快速过滤:
458
+
459
+ ```bash
460
+ ? 选择要删除的分支: (输入关键词过滤)
461
+ ❯ feature/20260105-login
462
+ feature/20260103-dashboard
463
+ hotfix/20260101-payment
464
+ ```
465
+
466
+ ## 🔍 快速参考
467
+
468
+ ### 常用命令速查
469
+
470
+ | 命令 | 功能 | 示例 |
471
+ | ------- | -------------------- | ----------------------- |
472
+ | `gw` | 显示交互式菜单 | `gw` |
473
+ | `gw f` | 创建 feature 分支 | `gw f --base develop` |
474
+ | `gw h` | 创建 hotfix 分支 | `gw h` |
475
+ | `gw c` | 提交代码(AI 模式) | `gw c` |
476
+ | `gw t` | 创建 tag | `gw t v` |
477
+ | `gw d` | 删除分支 | `gw d` |
478
+ | `gw s` | 管理 stash | `gw s` |
479
+ | `gw r` | 发布版本 | `gw r` |
480
+ | `gw ts` | 列出 tags | `gw ts v` |
481
+ | `gw td` | 删除 tag | `gw td` |
482
+ | `gw upt`| 更新工具 | `gw upt` |
483
+
484
+ ### 分支命名规范
485
+
486
+ ```
487
+ feature/YYYYMMDD-[ID-]description
488
+ hotfix/YYYYMMDD-[ID-]description
489
+
490
+ 示例:
491
+ feature/20260111-PROJ-123-add-user-login
492
+ hotfix/20260111-BUG-456-fix-payment-error
493
+ ```
494
+
495
+ ### 提交信息格式
496
+
497
+ ```
498
+ <emoji> <type>[optional scope]: <description>
499
+
500
+ [optional body]
501
+
502
+ [optional footer(s)]
503
+
504
+ 示例:
505
+ ✨ feat(auth): 添加用户登录功能
506
+ 🐛 fix(payment): 修复支付计算错误
507
+ 📝 docs: 更新 API 使用说明
508
+ ```
509
+
510
+ ## 📚 下一步
511
+
512
+ 掌握了基础用法后,你可以继续学习:
513
+
514
+ - [**AI 智能提交**](/guide/ai-commit) - 深入了解 AI commit 功能
515
+ - [**分支管理**](/guide/branch-management) - 高级分支管理技巧
516
+ - [**Tag 管理**](/guide/tag-management) - 版本标签的高级用法
517
+ - [**配置文件**](/config/) - 自定义工具行为
518
+ - [**最佳实践**](/guide/best-practices) - 学习高效的工作流程
519
+
520
+ ---
521
+
522
+ 通过这些基础用法,你已经可以高效地管理 Git 工作流了。Git Workflow 的设计理念是简化复杂操作,让你专注于代码开发而不是 Git 命令。