@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.
- package/.github/workflows/deploy-docs.yml +68 -0
- package/.github/workflows/test.yml +24 -4
- package/.husky/pre-commit +17 -0
- package/README.md +72 -1066
- package/ROADMAP.md +275 -0
- package/dist/index.js +450 -99
- package/docs/.vitepress/cache/deps/_metadata.json +52 -0
- package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js +9719 -0
- package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js.map +7 -0
- package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js +12824 -0
- package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js.map +7 -0
- package/docs/.vitepress/cache/deps/package.json +3 -0
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4505 -0
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +583 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +1352 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +1665 -0
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js +1813 -0
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +7 -0
- package/docs/.vitepress/cache/deps/vue.js +347 -0
- package/docs/.vitepress/cache/deps/vue.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-2CLQ7TTZ.js +9719 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-2CLQ7TTZ.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-LE5NDSFD.js +12824 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/chunk-LE5NDSFD.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/package.json +3 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vue_devtools-api.js +4505 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vue_devtools-api.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_core.js +583 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_core.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_integrations_useFocusTrap.js +1352 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___mark__js_src_vanilla__js.js +1665 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___mark__js_src_vanilla__js.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___minisearch.js +1813 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vitepress___minisearch.js.map +7 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vue.js +347 -0
- package/docs/.vitepress/cache/deps_temp_44e2fb0f/vue.js.map +7 -0
- package/docs/.vitepress/config.ts +167 -0
- package/docs/.vitepress/theme/custom.css +39 -0
- package/docs/.vitepress/theme/index.ts +4 -0
- package/docs/README.md +82 -0
- package/docs/commands/branch.md +468 -0
- package/docs/commands/commit.md +554 -0
- package/docs/commands/config.md +346 -0
- package/docs/commands/index.md +312 -0
- package/docs/commands/interactive.md +384 -0
- package/docs/commands/release.md +300 -0
- package/docs/commands/stash.md +309 -0
- package/docs/commands/tag.md +278 -0
- package/docs/commands/update.md +347 -0
- package/docs/config/ai-config.md +160 -0
- package/docs/config/branch-config.md +133 -0
- package/docs/config/commit-config.md +185 -0
- package/docs/config/config-file.md +776 -0
- package/docs/config/examples.md +279 -0
- package/docs/config/index.md +478 -0
- package/docs/features/git-wrapped.md +199 -0
- package/docs/guide/ai-commit.md +576 -0
- package/docs/guide/basic-usage.md +522 -0
- package/docs/guide/best-practices.md +426 -0
- package/docs/guide/branch-management.md +712 -0
- package/docs/guide/getting-started.md +294 -0
- package/docs/guide/index.md +168 -0
- package/docs/guide/installation.md +449 -0
- package/docs/guide/release-management.md +744 -0
- package/docs/guide/stash-management.md +608 -0
- package/docs/guide/tag-management.md +614 -0
- package/docs/index.md +205 -0
- package/docs/public/favicon.svg +21 -0
- package/docs/public/hero-logo.svg +43 -0
- package/docs/public/logo.svg +20 -0
- package/package.json +12 -2
- package/scripts/publish.js +55 -8
- package/scripts/publish.sh +20 -2
- package/scripts/release.sh +81 -3
- package/scripts/update-test-count.js +55 -0
- package/src/ai-service.ts +107 -15
- package/src/commands/commit.ts +4 -0
- package/src/commands/init.ts +18 -0
- package/src/commands/log.ts +503 -0
- package/src/config.ts +1 -0
- package/src/index.ts +37 -13
- package/src/utils.ts +10 -0
- package/tests/ai-service.test.ts +237 -2
- package/tests/init.test.ts +582 -0
- package/tests/log.test.ts +106 -0
- package/tests/release.test.ts +333 -0
- package/tests/setup.ts +21 -0
- package/tests/stash.test.ts +376 -0
- package/tests/update.test.ts +402 -0
- package/vitest.config.ts +3 -0
- package/zjex-logo.svg +22 -0
- package/zjex-optimized.svg +34 -0
- package/zjex.svg +1 -0
- 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
|
+
```
|