@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,309 @@
1
+ # Stash 命令
2
+
3
+ Stash 管理相关的命令详解。
4
+
5
+ ## 📋 命令概览
6
+
7
+ | 命令 | 别名 | 说明 |
8
+ |------|------|------|
9
+ | `gw stash` | `gw s`, `gw st` | 交互式管理 stash |
10
+
11
+ ## 💾 Stash 管理
12
+
13
+ ### 基本用法
14
+
15
+ ```bash
16
+ gw stash
17
+ gw s
18
+ gw st
19
+ ```
20
+
21
+ ### 主界面
22
+
23
+ ```bash
24
+ $ gw s
25
+ 💾 Stash 管理
26
+
27
+ 共 3 个 stash:
28
+
29
+ ? 选择 stash:
30
+ ❯ [0] main fix login bug (3 文件) 2 hours ago
31
+ [1] develop add new feature (5 文件) 1 day ago
32
+ [2] main WIP (1 文件) 3 days ago
33
+ + 创建新 stash
34
+ 取消
35
+ ```
36
+
37
+ ## 📋 Stash 详情
38
+
39
+ 选择一个 stash 后显示详细信息:
40
+
41
+ ```bash
42
+ Stash #0
43
+ 分支: main
44
+ 消息: fix login bug
45
+ 时间: 2 hours ago
46
+ 文件 (3):
47
+ • src/auth.ts
48
+ • src/login.ts
49
+ • tests/auth.test.ts
50
+ ────────────────────────────────────────
51
+ ? 操作:
52
+ ❯ 应用 (保留 stash)
53
+ 弹出 (应用并删除)
54
+ 创建分支
55
+ 查看差异
56
+ 删除
57
+ 返回列表
58
+ 取消
59
+ ```
60
+
61
+ ## 🔧 Stash 操作
62
+
63
+ ### 应用 Stash
64
+
65
+ **应用 (保留 stash)**:
66
+ - 将 stash 的更改应用到当前工作区
67
+ - 保留 stash,可以重复应用
68
+ - 等同于 `git stash apply`
69
+
70
+ **弹出 (应用并删除)**:
71
+ - 将 stash 的更改应用到当前工作区
72
+ - 删除该 stash
73
+ - 等同于 `git stash pop`
74
+
75
+ ### 创建分支
76
+
77
+ 从 stash 创建新分支:
78
+
79
+ ```bash
80
+ ? 操作: 创建分支
81
+
82
+ ? 选择分支类型:
83
+ ❯ Feature 分支
84
+ Hotfix 分支
85
+
86
+ ? 请输入 Story ID (可跳过): STASH-123
87
+ ? 请输入描述: restore-login-fix
88
+
89
+ ✔ 分支创建成功: feature/20260111-STASH-123-restore-login-fix
90
+ ✔ Stash 已应用到新分支
91
+ ✔ Stash 已删除: stash@{0}
92
+ ```
93
+
94
+ ### 查看差异
95
+
96
+ 显示 stash 包含的具体更改:
97
+
98
+ ```bash
99
+ ? 操作: 查看差异
100
+
101
+ diff --git a/src/auth.ts b/src/auth.ts
102
+ index 1234567..abcdefg 100644
103
+ --- a/src/auth.ts
104
+ +++ b/src/auth.ts
105
+ @@ -10,6 +10,10 @@ export function login(username: string, password: string) {
106
+ if (!username || !password) {
107
+ throw new Error('用户名和密码不能为空');
108
+ }
109
+ +
110
+ + // 添加输入验证
111
+ + if (username.length < 3) {
112
+ + throw new Error('用户名至少需要3个字符');
113
+ + }
114
+ }
115
+
116
+ 按任意键返回...
117
+ ```
118
+
119
+ ### 删除 Stash
120
+
121
+ ```bash
122
+ ? 操作: 删除
123
+
124
+ ? 确认删除 stash "fix login bug"?
125
+ ❯ 是
126
+
127
+
128
+ ✔ Stash 已删除: stash@{0}
129
+ ```
130
+
131
+ ## ➕ 创建 Stash
132
+
133
+ ### 基本创建
134
+
135
+ ```bash
136
+ ? 选择 stash: + 创建新 stash
137
+
138
+ 检测到以下更改:
139
+ M src/auth.ts
140
+ M src/login.ts
141
+ ?? src/new-file.ts
142
+
143
+ ? 输入 stash 消息: WIP: 重构登录逻辑
144
+
145
+ ? 是否包含未跟踪的文件?
146
+ ❯ 是,包含所有文件
147
+ 否,仅已跟踪文件
148
+
149
+ ✔ Stash 创建成功: stash@{0}
150
+ ```
151
+
152
+ ### 处理未跟踪文件
153
+
154
+ 工具会智能检测未跟踪的新文件:
155
+
156
+ ```bash
157
+ 检测到未跟踪的文件:
158
+ ?? src/new-component.ts
159
+ ?? tests/new-test.ts
160
+
161
+ ? 是否一并 stash 这些新文件?
162
+ ❯ 是,包含新文件
163
+ 否,忽略新文件
164
+ ```
165
+
166
+ ## 🎯 使用场景
167
+
168
+ ### 临时切换分支
169
+
170
+ ```bash
171
+ # 当前在 feature 分支开发,需要紧急修复 bug
172
+ gw s
173
+ # 选择 "创建新 stash"
174
+ # 输入消息: "WIP: 用户管理功能开发中"
175
+
176
+ # 切换到 main 分支修复 bug
177
+ git checkout main
178
+ gw h # 创建 hotfix 分支
179
+
180
+ # 修复完成后,回到 feature 分支
181
+ git checkout feature/user-management
182
+ gw s # 恢复之前的工作
183
+ ```
184
+
185
+ ### 实验性更改
186
+
187
+ ```bash
188
+ # 尝试新的实现方案
189
+ # ... 编写代码 ...
190
+
191
+ # 不确定是否要保留,先 stash
192
+ gw s
193
+ # 创建 stash: "实验: 新的数据处理方案"
194
+
195
+ # 尝试其他方案
196
+ # ... 编写代码 ...
197
+
198
+ # 对比两种方案
199
+ gw s
200
+ # 查看之前的 stash 差异
201
+ ```
202
+
203
+ ### 代码审查准备
204
+
205
+ ```bash
206
+ # 开发完成,准备提交前整理代码
207
+ gw s
208
+ # 创建 stash: "临时: 调试代码和注释"
209
+
210
+ # 清理代码,移除调试信息
211
+ # ... 整理代码 ...
212
+
213
+ # 提交干净的代码
214
+ gw c
215
+
216
+ # 如果需要,可以恢复调试代码
217
+ gw s
218
+ # 应用之前的 stash
219
+ ```
220
+
221
+ ## 🔄 与原生 Git 对比
222
+
223
+ ### 原生 Git Stash
224
+
225
+ ```bash
226
+ # 原生命令
227
+ git stash list
228
+ git stash show stash@{0}
229
+ git stash apply stash@{0}
230
+ git stash pop stash@{0}
231
+ git stash drop stash@{0}
232
+ git stash branch new-branch stash@{0}
233
+ ```
234
+
235
+ 输出难以阅读:
236
+ ```bash
237
+ $ git stash list
238
+ stash@{0}: WIP on main: 1234567 fix login bug
239
+ stash@{1}: WIP on develop: abcdefg add new feature
240
+ stash@{2}: WIP on main: 7890123 work in progress
241
+ ```
242
+
243
+ ### Git Workflow Stash
244
+
245
+ ```bash
246
+ # 统一命令
247
+ gw s
248
+ ```
249
+
250
+ 清晰的交互界面:
251
+ ```bash
252
+ 共 3 个 stash:
253
+
254
+ ? 选择 stash:
255
+ ❯ [0] main fix login bug (3 文件) 2 hours ago
256
+ [1] develop add new feature (5 文件) 1 day ago
257
+ [2] main WIP (1 文件) 3 days ago
258
+ ```
259
+
260
+ ## 🚀 最佳实践
261
+
262
+ ### Stash 命名规范
263
+
264
+ **推荐格式:**
265
+ ```
266
+ WIP: 功能描述
267
+ 实验: 尝试内容
268
+ 临时: 临时更改说明
269
+ 调试: 调试相关更改
270
+ ```
271
+
272
+ **示例:**
273
+ ```
274
+ WIP: 用户权限管理功能
275
+ 实验: 使用 Redis 缓存
276
+ 临时: 添加调试日志
277
+ 调试: 修复登录问题
278
+ ```
279
+
280
+ ### 定期清理
281
+
282
+ 1. **及时应用** - 完成工作后及时应用 stash
283
+ 2. **删除无用** - 定期删除不再需要的 stash
284
+ 3. **转为分支** - 长期保留的更改考虑创建分支
285
+
286
+ ### 团队协作
287
+
288
+ 1. **不要依赖** - stash 是本地的,不要依赖它进行团队协作
289
+ 2. **及时提交** - 重要更改应该提交而不是 stash
290
+ 3. **清晰命名** - 使用清晰的 stash 消息
291
+
292
+ ### 工作流集成
293
+
294
+ ```bash
295
+ # 1. 开发过程中临时保存
296
+ gw s # 创建 stash
297
+
298
+ # 2. 处理其他任务
299
+ # ... 其他工作 ...
300
+
301
+ # 3. 恢复工作
302
+ gw s # 应用 stash
303
+
304
+ # 4. 完成开发
305
+ gw c # 提交代码
306
+
307
+ # 5. 清理 stash
308
+ gw s # 删除不需要的 stash
309
+ ```
@@ -0,0 +1,278 @@
1
+ # Tag 命令
2
+
3
+ Tag 管理相关的命令详解。
4
+
5
+ ## 📋 命令列表
6
+
7
+ | 命令 | 别名 | 说明 |
8
+ |------|------|------|
9
+ | `gw tags [prefix]` | `gw ts` | 列出 tag |
10
+ | `gw tag [prefix]` | `gw t` | 创建 tag |
11
+ | `gw tag:delete` | `gw td` | 删除 tag |
12
+ | `gw tag:update` | `gw tu` | 修改 tag |
13
+
14
+ ## 📋 列出 Tag
15
+
16
+ ### 基本用法
17
+
18
+ ```bash
19
+ # 列出所有 tag
20
+ gw tags
21
+ gw ts
22
+
23
+ # 按前缀过滤
24
+ gw ts v
25
+ gw ts release-
26
+ ```
27
+
28
+ ### 输出示例
29
+
30
+ ```bash
31
+ $ gw ts
32
+ 📋 所有 tags (按时间倒序):
33
+
34
+ v1.2.0 Release v1.2.0 2 days ago
35
+ v1.1.0 Release v1.1.0 1 week ago
36
+ v1.0.0 Initial release 2 weeks ago
37
+
38
+ 共 3 个 tags
39
+ ```
40
+
41
+ ## 🏷️ 创建 Tag
42
+
43
+ ### 基本用法
44
+
45
+ ```bash
46
+ # 交互式创建
47
+ gw tag
48
+ gw t
49
+
50
+ # 指定前缀
51
+ gw t v
52
+ gw t release-
53
+ ```
54
+
55
+ ### 创建流程
56
+
57
+ 1. **选择前缀**(如果有多个)
58
+ 2. **选择版本类型**
59
+ 3. **输入 tag 消息**
60
+ 4. **确认创建**
61
+
62
+ ### 示例流程
63
+
64
+ ```bash
65
+ $ gw t
66
+ 🏷️ 创建 tag
67
+
68
+ ? 选择 tag 前缀:
69
+ ❯ v (最新: v1.2.0)
70
+ release- (最新: release-1.0.0)
71
+ + 使用新前缀
72
+
73
+ ? 选择版本类型:
74
+ ❯ patch → v1.2.1
75
+ minor → v1.3.0
76
+ major → v2.0.0
77
+ alpha → v1.2.1-alpha.1
78
+ beta → v1.2.1-beta.1
79
+ rc → v1.2.1-rc.1
80
+
81
+ ? 输入 tag 消息: Release v1.2.1 - Bug fixes
82
+
83
+ ✔ Tag 创建成功: v1.2.1
84
+ ✔ Tag 已推送: v1.2.1
85
+ ```
86
+
87
+ ## 🗑️ 删除 Tag
88
+
89
+ ### 基本用法
90
+
91
+ ```bash
92
+ gw tag:delete
93
+ gw td
94
+ ```
95
+
96
+ ### 删除流程
97
+
98
+ ```bash
99
+ $ gw td
100
+ 🗑️ 删除 tag
101
+
102
+ ? 选择要删除的 tag:
103
+ ❯ v1.2.0 (2 days ago)
104
+ v1.1.0 (1 week ago)
105
+ v1.0.0 (2 weeks ago)
106
+
107
+ ? 确认删除 tag v1.2.0?
108
+ ❯ 是,删除本地和远程
109
+ 仅删除本地
110
+ 取消
111
+
112
+ ✔ 本地 tag 已删除: v1.2.0
113
+ ✔ 远程 tag 已删除: origin/v1.2.0
114
+ ```
115
+
116
+ ## ✏️ 修改 Tag
117
+
118
+ ### 基本用法
119
+
120
+ ```bash
121
+ gw tag:update
122
+ gw tu
123
+ ```
124
+
125
+ ### 修改流程
126
+
127
+ ```bash
128
+ $ gw tu
129
+ ✏️ 修改 tag
130
+
131
+ ? 选择要修改的 tag:
132
+ ❯ v1.2.0 Release v1.2.0 (2 days ago)
133
+ v1.1.0 Release v1.1.0 (1 week ago)
134
+
135
+ 当前消息: Release v1.2.0
136
+ ? 输入新的 tag 消息: Release v1.2.0 - Bug fixes and improvements
137
+
138
+ ✔ Tag 消息已更新: v1.2.0
139
+ ✔ 已推送到远程
140
+ ```
141
+
142
+ ## 🔧 版本类型详解
143
+
144
+ ### 标准版本
145
+
146
+ | 类型 | 说明 | 示例 |
147
+ |------|------|------|
148
+ | `patch` | 补丁版本,Bug 修复 | 1.0.0 → 1.0.1 |
149
+ | `minor` | 次版本,新功能 | 1.0.0 → 1.1.0 |
150
+ | `major` | 主版本,破坏性变更 | 1.0.0 → 2.0.0 |
151
+
152
+ ### 预发布版本
153
+
154
+ | 类型 | 说明 | 示例 |
155
+ |------|------|------|
156
+ | `alpha` | 内部测试版 | 1.0.0 → 1.0.1-alpha.1 |
157
+ | `beta` | 公开测试版 | 1.0.0 → 1.0.1-beta.1 |
158
+ | `rc` | 发布候选版 | 1.0.0 → 1.0.1-rc.1 |
159
+
160
+ ### 预发布版本升级
161
+
162
+ 当前版本为预发布版本时,可以:
163
+
164
+ ```bash
165
+ # 当前: v1.2.1-beta.1
166
+ ? 选择版本类型:
167
+ ❯ pre → v1.2.1-beta.2 # 升级预发布版本
168
+ release → v1.2.1 # 转为正式版本
169
+ patch → v1.2.2 # 跳过当前,升级 patch
170
+ minor → v1.3.0 # 跳过当前,升级 minor
171
+ major → v2.0.0 # 跳过当前,升级 major
172
+ ```
173
+
174
+ ## 🎯 前缀检测
175
+
176
+ 工具会自动检测仓库中已有的 tag 前缀:
177
+
178
+ ### 常见前缀
179
+
180
+ - `v` - 最常用,如 v1.0.0
181
+ - `release-` - 如 release-1.0.0
182
+ - `@scope/` - 如 @myapp/1.0.0
183
+ - 自定义前缀
184
+
185
+ ### 初始化仓库
186
+
187
+ 如果仓库没有任何 tag:
188
+
189
+ ```bash
190
+ $ gw t
191
+ 🏷️ 创建 tag
192
+
193
+ 当前仓库没有 tag,请输入前缀 (如 v): v
194
+
195
+ ? 选择初始版本号:
196
+ ❯ v0.0.1
197
+ v0.1.0
198
+ v1.0.0
199
+ 自定义...
200
+ ```
201
+
202
+ ## 📝 Tag 消息规范
203
+
204
+ ### 推荐格式
205
+
206
+ ```
207
+ Release v1.2.0
208
+
209
+ ## 新功能
210
+ - 添加用户登录功能
211
+ - 支持多语言切换
212
+
213
+ ## Bug 修复
214
+ - 修复数据加载失败问题
215
+ - 优化内存使用
216
+
217
+ ## 其他
218
+ - 更新依赖版本
219
+ - 改进文档
220
+ ```
221
+
222
+ ### 简洁格式
223
+
224
+ ```
225
+ Release v1.2.0 - Bug fixes and improvements
226
+ ```
227
+
228
+ ## 🔄 与其他命令配合
229
+
230
+ ### 与 release 命令
231
+
232
+ ```bash
233
+ # 1. 更新版本号
234
+ gw release
235
+
236
+ # 2. 创建对应 tag
237
+ gw tag
238
+ ```
239
+
240
+ ### 与 commit 命令
241
+
242
+ ```bash
243
+ # 1. 提交最后的更改
244
+ gw commit
245
+
246
+ # 2. 创建发布 tag
247
+ gw tag
248
+ ```
249
+
250
+ ## 🚀 最佳实践
251
+
252
+ ### 版本发布流程
253
+
254
+ 1. **完成开发** - 确保所有功能完成
255
+ 2. **运行测试** - 确保代码质量
256
+ 3. **更新文档** - 更新 CHANGELOG 等
257
+ 4. **提交更改** - 使用 `gw c` 提交
258
+ 5. **创建 tag** - 使用 `gw t` 创建版本标签
259
+ 6. **发布版本** - 推送到生产环境
260
+
261
+ ### 语义化版本
262
+
263
+ 遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/) 规范:
264
+
265
+ - **MAJOR** - 不兼容的 API 修改
266
+ - **MINOR** - 向下兼容的功能性新增
267
+ - **PATCH** - 向下兼容的问题修正
268
+
269
+ ### 预发布策略
270
+
271
+ ```
272
+ 1.0.0-alpha.1 → 内部测试
273
+ 1.0.0-alpha.2 → 修复问题
274
+ 1.0.0-beta.1 → 公开测试
275
+ 1.0.0-beta.2 → 修复反馈
276
+ 1.0.0-rc.1 → 发布候选
277
+ 1.0.0 → 正式发布
278
+ ```