@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,608 @@
1
+ # Stash 管理
2
+
3
+ Stash 管理是 Git Workflow 的重要功能,提供了可视化的代码暂存管理,让你轻松处理临时代码变更。
4
+
5
+ ## 💾 Stash 管理理念
6
+
7
+ ### 可视化管理
8
+
9
+ 原生 `git stash list` 输出难以阅读:
10
+
11
+ ```bash
12
+ # 原生 git stash 输出
13
+ stash@{0}: WIP on main: a1b2c3d fix login bug
14
+ stash@{1}: On feature: def4567 add new feature
15
+ stash@{2}: WIP on develop: 890abcd update docs
16
+ ```
17
+
18
+ Git Workflow 提供清晰的可视化界面:
19
+
20
+ ```bash
21
+ # Git Workflow 可视化输出
22
+ 共 3 个 stash:
23
+
24
+ ? 选择 stash:
25
+ ❯ [0] main fix login bug (3 文件) 2 hours ago
26
+ [1] feature add new feature (5 文件) 1 day ago
27
+ [2] develop update docs (1 文件) 3 days ago
28
+ + 创建新 stash
29
+ 取消
30
+ ```
31
+
32
+ ### 智能信息解析
33
+
34
+ 自动解析和格式化 stash 信息:
35
+
36
+ - **索引编号** - stash@{0} → [0]
37
+ - **分支名称** - 提取分支信息
38
+ - **描述信息** - 清理和格式化消息
39
+ - **文件统计** - 显示影响的文件数量
40
+ - **时间信息** - 相对时间显示
41
+
42
+ ## 🎯 基本用法
43
+
44
+ ### 启动 Stash 管理
45
+
46
+ ```bash
47
+ gw s
48
+ # 或使用别名
49
+ gw stash
50
+ gw st
51
+ ```
52
+
53
+ ### 主界面
54
+
55
+ ```bash
56
+ gw s
57
+ 共 3 个 stash:
58
+
59
+ ? 选择 stash:
60
+ ❯ [0] main fix login bug (3 文件) 2 hours ago
61
+ [1] feature add new feature (5 文件) 1 day ago
62
+ [2] develop update docs (1 文件) 3 days ago
63
+ + 创建新 stash
64
+ 取消
65
+ ```
66
+
67
+ **界面元素说明:**
68
+ - **[索引]** - stash 的索引号
69
+ - **分支名** - 创建 stash 时的分支
70
+ - **描述** - stash 的描述信息
71
+ - **文件数** - 包含的文件数量
72
+ - **时间** - 创建时间(相对时间)
73
+
74
+ ## 📋 查看 Stash 详情
75
+
76
+ ### 选择 Stash 后的详情页
77
+
78
+ ```bash
79
+ 选择 stash [0] 后显示:
80
+
81
+ Stash #0
82
+ 分支: main
83
+ 消息: fix login bug
84
+ 时间: 2 hours ago
85
+ 文件 (3):
86
+ • src/auth.ts
87
+ • src/login.ts
88
+ • tests/auth.test.ts
89
+ ────────────────────────────────────────
90
+ ? 操作:
91
+ ❯ 应用 (保留 stash)
92
+ 弹出 (应用并删除)
93
+ 创建分支
94
+ 查看差异
95
+ 删除
96
+ 返回列表
97
+ 取消
98
+ ```
99
+
100
+ **详情信息包括:**
101
+ - **索引编号** - stash 的唯一标识
102
+ - **分支信息** - 创建时所在的分支
103
+ - **消息内容** - 完整的描述信息
104
+ - **创建时间** - 精确的时间信息
105
+ - **文件列表** - 包含的所有文件(最多显示 10 个)
106
+
107
+ ## 🔄 Stash 操作
108
+
109
+ ### 应用 Stash(保留)
110
+
111
+ ```bash
112
+ ? 操作:
113
+ ❯ 应用 (保留 stash)
114
+
115
+ ✔ Stash 已应用
116
+ 💡 提示: stash 仍然保留,可以重复应用
117
+ ```
118
+
119
+ **特点:**
120
+ - 将 stash 中的更改应用到当前工作区
121
+ - stash 本身不会被删除
122
+ - 可以多次应用到不同分支
123
+
124
+ **使用场景:**
125
+ - 在多个分支中应用相同的更改
126
+ - 测试 stash 内容是否正确
127
+ - 保留 stash 作为备份
128
+
129
+ ### 弹出 Stash(应用并删除)
130
+
131
+ ```bash
132
+ ? 操作:
133
+ ❯ 弹出 (应用并删除)
134
+
135
+ ✔ Stash 已弹出并删除
136
+ ```
137
+
138
+ **特点:**
139
+ - 将 stash 中的更改应用到当前工作区
140
+ - 同时删除该 stash
141
+ - 最常用的 stash 操作
142
+
143
+ **使用场景:**
144
+ - 恢复临时保存的工作进度
145
+ - 切换分支后恢复之前的更改
146
+ - 清理不再需要的 stash
147
+
148
+ ### 创建分支
149
+
150
+ ```bash
151
+ ? 操作:
152
+ ❯ 创建分支
153
+
154
+ ? 选择分支类型:
155
+ ❯ feature
156
+ hotfix
157
+ 取消
158
+
159
+ ? 请输入 Story ID (可跳过): STASH-001
160
+ ? 请输入描述: recover-login-work
161
+
162
+ ✔ 分支创建成功: feature/20260111-STASH-001-recover-login-work
163
+ ✔ Stash 已应用到新分支
164
+ ✔ Stash 已自动删除
165
+ ```
166
+
167
+ **特点:**
168
+ - 基于 stash 内容创建新分支
169
+ - 自动应用 stash 到新分支
170
+ - 遵循项目的分支命名规范
171
+ - 创建成功后自动删除 stash
172
+
173
+ **使用场景:**
174
+ - 将临时工作转换为正式功能分支
175
+ - 从实验性代码创建新功能
176
+ - 恢复意外丢失的工作进度
177
+
178
+ ### 查看差异
179
+
180
+ ```bash
181
+ ? 操作:
182
+ ❯ 查看差异
183
+
184
+ # 显示彩色的 diff 输出
185
+ diff --git a/src/auth.ts b/src/auth.ts
186
+ index 1234567..abcdefg 100644
187
+ --- a/src/auth.ts
188
+ +++ b/src/auth.ts
189
+ @@ -10,6 +10,10 @@ export function validateUser(username: string, password: string) {
190
+ if (!username || !password) {
191
+ return false;
192
+ }
193
+ +
194
+ + // 添加密码强度检查
195
+ + if (password.length < 8) {
196
+ + return false;
197
+ + }
198
+
199
+ return true;
200
+ }
201
+
202
+ 按 Enter 返回菜单...
203
+ ```
204
+
205
+ **特点:**
206
+ - 显示完整的代码差异
207
+ - 支持彩色输出
208
+ - 查看后返回操作菜单
209
+ - 不影响 stash 状态
210
+
211
+ **使用场景:**
212
+ - 确认 stash 内容是否正确
213
+ - 回顾之前的工作内容
214
+ - 决定是否应用 stash
215
+
216
+ ### 删除 Stash
217
+
218
+ ```bash
219
+ ? 操作:
220
+ ❯ 删除
221
+
222
+ ? 确认删除 stash@{0}?
223
+ ❯ 是
224
+
225
+
226
+ ✔ Stash 已删除
227
+ ```
228
+
229
+ **特点:**
230
+ - 永久删除 stash
231
+ - 需要确认操作
232
+ - 无法恢复删除的 stash
233
+
234
+ **使用场景:**
235
+ - 清理不再需要的 stash
236
+ - 释放存储空间
237
+ - 保持 stash 列表整洁
238
+
239
+ ## ➕ 创建新 Stash
240
+
241
+ ### 自动检测变更
242
+
243
+ ```bash
244
+ gw s
245
+ # 如果没有现有 stash,会直接提示创建
246
+
247
+ 没有 stash 记录
248
+
249
+ 检测到未提交的变更,是否创建 stash?
250
+ ❯ 是
251
+
252
+ ```
253
+
254
+ ### 手动创建 Stash
255
+
256
+ ```bash
257
+ gw s
258
+ # 选择 "+ 创建新 stash"
259
+
260
+ 检测到以下变更:
261
+ M src/auth.ts
262
+ M src/login.ts
263
+ ?? src/new-feature.ts
264
+ ────────────────────────────────────────
265
+ ? 检测到未跟踪的文件,是否一并 stash?
266
+ ❯ 是 (包含未跟踪文件)
267
+ 否 (仅已跟踪文件)
268
+
269
+ ? Stash 消息 (可跳过): 临时保存登录功能优化
270
+
271
+ ✔ Stash 创建成功
272
+ ```
273
+
274
+ ### 创建选项
275
+
276
+ #### 包含未跟踪文件
277
+
278
+ ```bash
279
+ ? 检测到未跟踪的文件,是否一并 stash?
280
+ ❯ 是 (包含未跟踪文件) # 使用 git stash push -u
281
+ 否 (仅已跟踪文件) # 使用 git stash push
282
+ ```
283
+
284
+ **区别:**
285
+ - **包含未跟踪文件** - 新创建的文件也会被 stash
286
+ - **仅已跟踪文件** - 只 stash 已经被 Git 跟踪的文件
287
+
288
+ #### 添加描述信息
289
+
290
+ ```bash
291
+ ? Stash 消息 (可跳过): 临时保存用户认证功能开发进度
292
+
293
+ # 生成的 stash 消息格式
294
+ WIP on main: a1b2c3d 临时保存用户认证功能开发进度
295
+ ```
296
+
297
+ **推荐的描述格式:**
298
+ - `功能模块: 简短描述`
299
+ - `临时保存 XXX 功能开发进度`
300
+ - `切换分支前保存当前工作`
301
+ - `实验性代码 - XXX 方案`
302
+
303
+ ## 🎯 使用场景
304
+
305
+ ### 场景一:临时切换分支
306
+
307
+ ```bash
308
+ # 正在开发功能,需要紧急修复 Bug
309
+ gw s
310
+ # 选择 "创建新 stash"
311
+ # 描述: "临时保存用户界面开发进度"
312
+
313
+ # 切换到 main 分支修复 Bug
314
+ git checkout main
315
+ gw h
316
+ # 修复 Bug...
317
+
318
+ # 修复完成,回到原分支
319
+ git checkout feature/user-interface
320
+ gw s
321
+ # 选择之前的 stash,弹出恢复工作
322
+ ```
323
+
324
+ ### 场景二:实验性代码
325
+
326
+ ```bash
327
+ # 尝试新的实现方案
328
+ # 修改代码进行实验...
329
+
330
+ # 实验不成功,保存实验代码
331
+ gw s
332
+ # 描述: "实验性代码 - 新的数据处理方案"
333
+
334
+ # 恢复到实验前的状态
335
+ git checkout .
336
+
337
+ # 如果后续想要查看实验代码
338
+ gw s
339
+ # 选择实验 stash,查看差异
340
+ ```
341
+
342
+ ### 场景三:代码备份
343
+
344
+ ```bash
345
+ # 重要更改前创建备份
346
+ gw s
347
+ # 描述: "重构前的代码备份"
348
+
349
+ # 进行重构...
350
+ # 如果重构出现问题,可以快速恢复
351
+ gw s
352
+ # 选择备份 stash,应用恢复
353
+ ```
354
+
355
+ ### 场景四:跨分支应用更改
356
+
357
+ ```bash
358
+ # 在 feature 分支开发了通用工具函数
359
+ gw s
360
+ # 描述: "通用工具函数 - 可用于多个分支"
361
+
362
+ # 切换到其他分支
363
+ git checkout another-feature
364
+
365
+ # 应用相同的工具函数
366
+ gw s
367
+ # 选择工具函数 stash,应用(保留 stash)
368
+ ```
369
+
370
+ ### 场景五:从 Stash 创建功能分支
371
+
372
+ ```bash
373
+ # 临时代码变成了有价值的功能
374
+ gw s
375
+ # 选择相关 stash
376
+ # 选择 "创建分支"
377
+ # 类型: feature
378
+ # 描述: implement-auto-save
379
+
380
+ # 新分支创建成功,stash 内容已应用
381
+ # 可以继续开发这个功能
382
+ ```
383
+
384
+ ## 🔧 高级 Stash 技巧
385
+
386
+ ### 技巧一:部分文件 Stash
387
+
388
+ ```bash
389
+ # 只 stash 特定文件
390
+ git stash push -m "部分文件 stash" src/auth.ts src/login.ts
391
+
392
+ # 或使用交互式 stash
393
+ git stash push -p -m "交互式选择变更"
394
+ ```
395
+
396
+ ### 技巧二:Stash 与分支切换集成
397
+
398
+ Git Workflow 在创建分支时会自动检测未提交更改:
399
+
400
+ ```bash
401
+ gw f
402
+ 检测到未提交的更改:
403
+ M src/index.ts
404
+ ────────────────────────────────────────
405
+ ? 是否暂存 (stash) 这些更改后继续?
406
+ ❯ 是,暂存更改并创建分支
407
+ 否,取消操作
408
+
409
+ ✔ 更改已暂存到 stash
410
+ ✔ 分支创建成功: feature/20260111-new-feature
411
+ 💡 提示: 使用 'gw s' 可以恢复暂存的更改
412
+ ```
413
+
414
+ ### 技巧三:Stash 命名规范
415
+
416
+ **推荐的命名格式:**
417
+
418
+ ```bash
419
+ # 功能模块相关
420
+ "auth: 添加登录验证逻辑"
421
+ "ui: 调整用户界面布局"
422
+ "api: 优化数据获取接口"
423
+
424
+ # 工作状态相关
425
+ "临时保存 XXX 功能开发进度"
426
+ "切换分支前保存当前工作"
427
+ "重构前的代码备份"
428
+
429
+ # 实验性代码
430
+ "实验性代码 - 新的算法实现"
431
+ "性能优化尝试 - 缓存方案"
432
+ ```
433
+
434
+ ### 技巧四:Stash 与 Git Hooks 集成
435
+
436
+ ```bash
437
+ # .git/hooks/pre-checkout
438
+ #!/bin/sh
439
+ # 切换分支前自动检查是否需要 stash
440
+
441
+ if [ -n "$(git status --porcelain)" ]; then
442
+ echo "检测到未提交的更改,建议使用 'gw s' 创建 stash"
443
+ exit 1
444
+ fi
445
+ ```
446
+
447
+ ## 📊 Stash 管理度量
448
+
449
+ ### Stash 使用统计
450
+
451
+ ```bash
452
+ #!/bin/bash
453
+ # stash-metrics.sh
454
+
455
+ echo "=== Stash 管理度量报告 ==="
456
+ echo "时间: $(date)"
457
+ echo
458
+
459
+ # Stash 数量统计
460
+ stash_count=$(git stash list | wc -l)
461
+ echo "📊 当前 stash 数量: $stash_count"
462
+ echo
463
+
464
+ # Stash 年龄分析
465
+ echo "📊 Stash 年龄分析:"
466
+ git stash list --format="%gd %cr %gs" | head -10
467
+ echo
468
+
469
+ # 分支分布
470
+ echo "📊 Stash 分支分布:"
471
+ git stash list --format="%gs" | \
472
+ grep -o "On [^:]*" | \
473
+ sort | uniq -c | sort -nr
474
+ ```
475
+
476
+ ### Stash 清理建议
477
+
478
+ ```bash
479
+ # 检查超过 30 天的 stash
480
+ git stash list --format="%gd %ct %gs" | \
481
+ awk '$2 < '$(date -d '30 days ago' +%s)' {print $1, $3}' | \
482
+ head -5
483
+ ```
484
+
485
+ ## 🚨 常见问题解决
486
+
487
+ ### 问题一:Stash 应用冲突
488
+
489
+ ```bash
490
+ ❌ Stash 应用失败: 存在冲突
491
+ ```
492
+
493
+ **解决方案:**
494
+ ```bash
495
+ # 查看冲突文件
496
+ git status
497
+
498
+ # 手动解决冲突
499
+ # 编辑冲突文件...
500
+
501
+ # 标记冲突已解决
502
+ git add .
503
+
504
+ # 删除已应用的 stash(如果需要)
505
+ git stash drop stash@{0}
506
+ ```
507
+
508
+ ### 问题二:Stash 列表为空
509
+
510
+ ```bash
511
+ 没有 stash 记录
512
+ ```
513
+
514
+ **可能原因:**
515
+ - 当前没有未提交的更改
516
+ - 所有 stash 都已被应用或删除
517
+
518
+ **解决方案:**
519
+ - 修改一些文件后再创建 stash
520
+ - 检查是否在正确的仓库中
521
+
522
+ ### 问题三:无法创建 Stash
523
+
524
+ ```bash
525
+ ❌ 无法创建 stash: 工作区是干净的
526
+ ```
527
+
528
+ **解决方案:**
529
+ - 确认有未提交的更改:`git status`
530
+ - 修改文件后再尝试创建 stash
531
+
532
+ ### 问题四:Stash 内容丢失
533
+
534
+ ```bash
535
+ ❌ Stash stash@{0} 不存在
536
+ ```
537
+
538
+ **解决方案:**
539
+ ```bash
540
+ # 查看 reflog 寻找丢失的 stash
541
+ git fsck --unreachable | grep commit | cut -d' ' -f3 | \
542
+ xargs git log --merges --no-walk --grep=WIP
543
+ ```
544
+
545
+ ## 🔗 与其他功能集成
546
+
547
+ ### 与分支管理集成
548
+
549
+ ```bash
550
+ # 创建分支时自动处理未提交更改
551
+ gw f
552
+ # 自动提示是否 stash 当前更改
553
+
554
+ # 删除分支前检查是否有相关 stash
555
+ gw d
556
+ # 提示是否有该分支的 stash 需要处理
557
+ ```
558
+
559
+ ### 与提交功能集成
560
+
561
+ ```bash
562
+ # 提交前检查是否有相关 stash
563
+ gw c
564
+ # 如果检测到相关 stash,提示是否先应用
565
+ ```
566
+
567
+ ### 与工作流集成
568
+
569
+ ```bash
570
+ # 完整的工作流示例
571
+ gw f # 创建分支(自动 stash 当前更改)
572
+ gw s # 恢复之前的 stash
573
+ # 开发代码...
574
+ gw c # 提交代码
575
+ gw s # 临时保存未完成的工作
576
+ gw h # 切换处理紧急问题
577
+ gw s # 恢复之前的工作继续开发
578
+ ```
579
+
580
+ ## 💡 最佳实践
581
+
582
+ ### 1. 及时清理
583
+
584
+ - 定期检查和清理不需要的 stash
585
+ - 避免积累过多的 stash
586
+ - 使用描述性的 stash 消息
587
+
588
+ ### 2. 合理使用
589
+
590
+ - 短期临时保存使用 stash
591
+ - 长期保存考虑创建分支
592
+ - 重要更改及时提交而不是 stash
593
+
594
+ ### 3. 命名规范
595
+
596
+ - 使用清晰的描述信息
597
+ - 包含功能模块和简短说明
598
+ - 避免使用默认的 WIP 消息
599
+
600
+ ### 4. 安全操作
601
+
602
+ - 应用 stash 前先查看差异
603
+ - 重要 stash 先应用(保留)再删除
604
+ - 定期备份重要的 stash 内容
605
+
606
+ ---
607
+
608
+ 通过 Git Workflow 的可视化 stash 管理,你可以轻松处理临时代码变更,提高开发效率。合理使用 stash 功能,让你的工作流程更加灵活和高效。