@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,478 @@
1
+ # 配置概览
2
+
3
+ Git Workflow 提供了灵活的配置系统,支持全局配置和项目配置,让你可以根据不同的需求自定义工具行为。
4
+
5
+ ## 🎯 配置理念
6
+
7
+ ### 约定优于配置
8
+
9
+ Git Workflow 遵循"约定优于配置"的原则:
10
+
11
+ - **零配置开箱即用** - 无需任何配置即可开始使用
12
+ - **合理的默认值** - 提供适合大多数场景的默认配置
13
+ - **渐进式配置** - 可以根据需要逐步添加配置项
14
+
15
+ ### 灵活的配置层级
16
+
17
+ 支持多层级配置,满足不同场景需求:
18
+
19
+ 1. **内置默认配置** - 工具内置的基础配置
20
+ 2. **全局配置** - 对所有项目生效的个人配置
21
+ 3. **项目配置** - 仅对当前项目生效的团队配置
22
+
23
+ **配置优先级:** 项目配置 > 全局配置 > 默认配置
24
+
25
+ ## 📁 配置文件位置
26
+
27
+ ### 全局配置
28
+
29
+ ```
30
+ ~/.gwrc.json
31
+ ```
32
+
33
+ **特点:**
34
+ - 对所有项目生效
35
+ - 适合个人偏好设置
36
+ - 一次配置,处处使用
37
+
38
+ **适用场景:**
39
+ - AI commit 配置(API key、提供商等)
40
+ - 个人习惯配置(emoji、自动暂存等)
41
+ - 通用的分支命名规范
42
+
43
+ ### 项目配置
44
+
45
+ 支持多种文件名,按优先级查找:
46
+
47
+ ```
48
+ .gwrc.json # 推荐,JSON 格式
49
+ .gwrc # 简化文件名
50
+ gw.config.json # 明确的配置文件名
51
+ ```
52
+
53
+ **特点:**
54
+ - 仅对当前项目生效
55
+ - 可以提交到版本控制
56
+ - 团队成员共享配置
57
+
58
+ **适用场景:**
59
+ - 团队统一的分支规范
60
+ - 项目特定的 ID 要求
61
+ - 特殊的分支前缀
62
+
63
+ ### 查找顺序
64
+
65
+ Git Workflow 按以下顺序查找配置文件:
66
+
67
+ 1. **当前目录** - `./gwrc.json`
68
+ 2. **Git 仓库根目录** - `<git-root>/.gwrc.json`
69
+ 3. **用户主目录** - `~/.gwrc.json`
70
+ 4. **内置默认配置**
71
+
72
+ ## 🚀 快速开始
73
+
74
+ ### 创建全局配置(推荐)
75
+
76
+ ```bash
77
+ gw init
78
+ ```
79
+
80
+ 选择配置范围:
81
+
82
+ ```
83
+ ⚙️ 初始化 git-workflow 配置
84
+
85
+ ? 选择配置范围:
86
+ ❯ 全局配置(所有项目生效) # 推荐!配置一次,所有项目都能用
87
+ 项目配置(仅当前项目) # 为特定项目自定义配置
88
+ ```
89
+
90
+ 选择 **全局配置**,按提示完成配置:
91
+
92
+ ```
93
+ ✔ 选择配置范围: 全局配置(所有项目生效)
94
+
95
+ ? Feature 分支前缀: feature
96
+ ? Hotfix 分支前缀: hotfix
97
+ ? 是否强制要求填写 ID: 否
98
+ ? Feature 分支 ID 标签: Story ID
99
+ ? Hotfix 分支 ID 标签: Issue ID
100
+ ? 提交时是否自动暂存所有更改: 是
101
+ ? 是否使用 emoji: 是
102
+
103
+ ? 是否启用 AI commit 功能: 是
104
+ ? 选择 AI 提供商: GitHub Models(免费,推荐)
105
+ ? 输入你的 GitHub Token: ghp_xxxxxxxxxxxx
106
+ ? 选择语言: 中文
107
+
108
+ ✔ 全局配置已保存到: ~/.gwrc.json
109
+ ```
110
+
111
+ ### 创建项目配置
112
+
113
+ 在项目根目录运行:
114
+
115
+ ```bash
116
+ cd your-project
117
+ gw init
118
+ ```
119
+
120
+ 选择 **项目配置**,配置团队规范:
121
+
122
+ ```
123
+ ✔ 选择配置范围: 项目配置(仅当前项目)
124
+
125
+ ? 是否强制要求填写 ID: 是
126
+ ? Feature 分支 ID 标签: Jira ID
127
+ ? Hotfix 分支 ID 标签: Bug ID
128
+ ? 创建分支后是否自动推送到远程: 是
129
+ ? 默认基础分支: develop
130
+
131
+ ✔ 项目配置已保存到: .gwrc.json
132
+ ```
133
+
134
+ ## 📋 配置项详解
135
+
136
+ ### 完整配置示例
137
+
138
+ ```json
139
+ {
140
+ "baseBranch": "develop",
141
+ "featurePrefix": "feature",
142
+ "hotfixPrefix": "hotfix",
143
+ "requireId": true,
144
+ "featureIdLabel": "Jira ID",
145
+ "hotfixIdLabel": "Bug ID",
146
+ "defaultTagPrefix": "v",
147
+ "autoPush": true,
148
+ "autoStage": true,
149
+ "useEmoji": true,
150
+ "commitEmojis": {
151
+ "feat": "✨",
152
+ "fix": "🐛",
153
+ "docs": "📝"
154
+ },
155
+ "aiCommit": {
156
+ "enabled": true,
157
+ "provider": "github",
158
+ "apiKey": "ghp_xxxxxxxxxxxx",
159
+ "model": "gpt-4o-mini",
160
+ "language": "zh-CN",
161
+ "maxTokens": 200,
162
+ "detailedDescription": true
163
+ }
164
+ }
165
+ ```
166
+
167
+ ### 基础配置
168
+
169
+ | 配置项 | 类型 | 默认值 | 说明 |
170
+ | ---------------- | --------- | ----------- | ---------------------------------------- |
171
+ | `baseBranch` | `string` | 自动检测 | 默认基础分支,不设置则自动检测 main/master |
172
+ | `featurePrefix` | `string` | `"feature"` | feature 分支前缀 |
173
+ | `hotfixPrefix` | `string` | `"hotfix"` | hotfix 分支前缀 |
174
+
175
+ ### 分支配置
176
+
177
+ | 配置项 | 类型 | 默认值 | 说明 |
178
+ | ------------------ | --------- | ------------ | ------------------------------------------------------------------------------- |
179
+ | `requireId` | `boolean` | `false` | 是否强制要求填写 ID。开启后创建分支时必须填写 ID,不能跳过 |
180
+ | `featureIdLabel` | `string` | `"Story ID"` | feature 分支 ID 提示文字 |
181
+ | `hotfixIdLabel` | `string` | `"Issue ID"` | hotfix 分支 ID 提示文字 |
182
+ | `autoPush` | `boolean` | - | 创建分支后是否自动推送到远程。`true` 自动推送,`false` 不推送,不设置则每次询问 |
183
+
184
+ ### 版本配置
185
+
186
+ | 配置项 | 类型 | 默认值 | 说明 |
187
+ | ------------------ | -------- | ------ | --------------------------------- |
188
+ | `defaultTagPrefix` | `string` | - | 默认 tag 前缀,设置后跳过选择步骤 |
189
+
190
+ ### 提交配置
191
+
192
+ | 配置项 | 类型 | 默认值 | 说明 |
193
+ | -------------- | --------- | ------ | ----------------------------- |
194
+ | `autoStage` | `boolean` | `true` | commit 时是否自动暂存所有更改 |
195
+ | `useEmoji` | `boolean` | `true` | commit 时是否使用 emoji |
196
+ | `commitEmojis` | `object` | - | 自定义各类型 commit 的 emoji |
197
+
198
+ ### AI 配置
199
+
200
+ | 配置项 | 类型 | 默认值 | 说明 |
201
+ | ----------------------------- | --------- | ---------- | ---------------------------------------------------- |
202
+ | `aiCommit.enabled` | `boolean` | `true` | 是否启用 AI commit 功能 |
203
+ | `aiCommit.provider` | `string` | `"github"` | AI 提供商:`github` / `openai` / `claude` / `ollama` |
204
+ | `aiCommit.apiKey` | `string` | - | API key,留空使用内置 key |
205
+ | `aiCommit.model` | `string` | 根据提供商 | 模型名称 |
206
+ | `aiCommit.language` | `string` | `"zh-CN"` | 生成语言:`zh-CN` / `en-US` |
207
+ | `aiCommit.maxTokens` | `number` | `200` | 最大 token 数 |
208
+ | `aiCommit.detailedDescription` | `boolean` | `true` | 是否生成详细的修改点描述 |
209
+
210
+ ## 🎨 配置场景
211
+
212
+ ### 场景一:个人开发者
213
+
214
+ **需求:**
215
+ - 启用 AI commit
216
+ - 使用 emoji
217
+ - 自动暂存文件
218
+ - 不强制要求 ID
219
+
220
+ **配置:**
221
+
222
+ ```json
223
+ {
224
+ "autoStage": true,
225
+ "useEmoji": true,
226
+ "requireId": false,
227
+ "aiCommit": {
228
+ "enabled": true,
229
+ "provider": "github",
230
+ "language": "zh-CN"
231
+ }
232
+ }
233
+ ```
234
+
235
+ ### 场景二:团队协作
236
+
237
+ **需求:**
238
+ - 统一分支命名规范
239
+ - 强制关联 Issue/Story
240
+ - 自动推送到远程
241
+ - 基于 develop 分支开发
242
+
243
+ **配置:**
244
+
245
+ ```json
246
+ {
247
+ "baseBranch": "develop",
248
+ "requireId": true,
249
+ "featureIdLabel": "Jira ID",
250
+ "hotfixIdLabel": "Bug ID",
251
+ "autoPush": true
252
+ }
253
+ ```
254
+
255
+ ### 场景三:企业级项目
256
+
257
+ **需求:**
258
+ - 严格的分支规范
259
+ - 禁用 emoji(CI/CD 兼容性)
260
+ - 自定义分支前缀
261
+ - 手动选择暂存文件
262
+
263
+ **配置:**
264
+
265
+ ```json
266
+ {
267
+ "featurePrefix": "feat",
268
+ "hotfixPrefix": "fix",
269
+ "requireId": true,
270
+ "featureIdLabel": "需求编号",
271
+ "hotfixIdLabel": "缺陷编号",
272
+ "useEmoji": false,
273
+ "autoStage": false,
274
+ "aiCommit": {
275
+ "enabled": false
276
+ }
277
+ }
278
+ ```
279
+
280
+ ### 场景四:开源项目
281
+
282
+ **需求:**
283
+ - 英文提交信息
284
+ - 使用 emoji
285
+ - 不强制 ID
286
+ - 基于 main 分支
287
+
288
+ **配置:**
289
+
290
+ ```json
291
+ {
292
+ "baseBranch": "main",
293
+ "requireId": false,
294
+ "useEmoji": true,
295
+ "aiCommit": {
296
+ "enabled": true,
297
+ "language": "en-US"
298
+ }
299
+ }
300
+ ```
301
+
302
+ ## 🔧 配置管理
303
+
304
+ ### 查看当前配置
305
+
306
+ ```bash
307
+ # 查看生效的配置
308
+ gw config show
309
+
310
+ # 查看配置文件位置
311
+ gw config path
312
+ ```
313
+
314
+ ### 编辑配置
315
+
316
+ ```bash
317
+ # 编辑全局配置
318
+ gw config edit --global
319
+
320
+ # 编辑项目配置
321
+ gw config edit --local
322
+ ```
323
+
324
+ ### 重置配置
325
+
326
+ ```bash
327
+ # 重置为默认配置
328
+ gw config reset
329
+
330
+ # 删除配置文件
331
+ gw config clean
332
+ ```
333
+
334
+ ### 验证配置
335
+
336
+ ```bash
337
+ # 验证配置文件语法
338
+ gw config validate
339
+
340
+ # 测试配置效果
341
+ gw config test
342
+ ```
343
+
344
+ ## 📚 配置最佳实践
345
+
346
+ ### 1. 分层配置策略
347
+
348
+ **全局配置(个人偏好):**
349
+ ```json
350
+ {
351
+ "aiCommit": {
352
+ "enabled": true,
353
+ "provider": "github",
354
+ "apiKey": "your-token"
355
+ },
356
+ "useEmoji": true,
357
+ "autoStage": true
358
+ }
359
+ ```
360
+
361
+ **项目配置(团队规范):**
362
+ ```json
363
+ {
364
+ "requireId": true,
365
+ "featureIdLabel": "Jira ID",
366
+ "autoPush": true,
367
+ "baseBranch": "develop"
368
+ }
369
+ ```
370
+
371
+ ### 2. 版本控制
372
+
373
+ **提交项目配置:**
374
+ ```bash
375
+ git add .gwrc.json
376
+ git commit -m "chore: add git-workflow config"
377
+ ```
378
+
379
+ **忽略敏感信息:**
380
+ ```gitignore
381
+ # .gitignore
382
+ .gwrc.local.json # 本地覆盖配置
383
+ ```
384
+
385
+ ### 3. 团队协作
386
+
387
+ **文档化配置:**
388
+ ```markdown
389
+ # 项目配置说明
390
+
391
+ 本项目使用 git-workflow 进行版本管理,配置如下:
392
+
393
+ - 分支前缀:feature/、hotfix/
394
+ - 必须填写 Jira ID
395
+ - 基于 develop 分支开发
396
+ - 自动推送到远程
397
+
398
+ ## 安装和配置
399
+
400
+ 1. 安装工具:`npm install -g @zjex/git-workflow`
401
+ 2. 配置已包含在项目中,无需额外配置
402
+ 3. 开始使用:`gw f` 创建功能分支
403
+ ```
404
+
405
+ ### 4. 配置迁移
406
+
407
+ **从旧版本迁移:**
408
+ ```bash
409
+ # 备份旧配置
410
+ cp ~/.gwrc.json ~/.gwrc.json.backup
411
+
412
+ # 重新初始化
413
+ gw init --migrate
414
+ ```
415
+
416
+ **跨项目复制配置:**
417
+ ```bash
418
+ # 复制配置到新项目
419
+ cp project-a/.gwrc.json project-b/.gwrc.json
420
+ ```
421
+
422
+ ## 🔍 故障排除
423
+
424
+ ### 配置文件语法错误
425
+
426
+ ```bash
427
+ ❌ 配置文件语法错误: Unexpected token } in JSON
428
+ ```
429
+
430
+ **解决方案:**
431
+ 1. 使用 JSON 验证工具检查语法
432
+ 2. 重新运行 `gw init` 生成新配置
433
+ 3. 参考文档中的配置示例
434
+
435
+ ### 配置项不生效
436
+
437
+ ```bash
438
+ ❌ 配置项 'unknownOption' 不被识别
439
+ ```
440
+
441
+ **解决方案:**
442
+ 1. 检查配置项名称是否正确
443
+ 2. 查看文档确认支持的配置项
444
+ 3. 更新到最新版本
445
+
446
+ ### 权限问题
447
+
448
+ ```bash
449
+ ❌ 无法写入配置文件: Permission denied
450
+ ```
451
+
452
+ **解决方案:**
453
+ 1. 检查文件权限:`ls -la ~/.gwrc.json`
454
+ 2. 修改权限:`chmod 644 ~/.gwrc.json`
455
+ 3. 使用 sudo(不推荐)
456
+
457
+ ### 配置冲突
458
+
459
+ ```bash
460
+ ⚠️ 项目配置与全局配置存在冲突
461
+ ```
462
+
463
+ **解决方案:**
464
+ 1. 项目配置优先级更高,会覆盖全局配置
465
+ 2. 检查配置合并结果:`gw config show`
466
+ 3. 根据需要调整配置
467
+
468
+ ## 📖 深入学习
469
+
470
+ - [**配置文件详解**](/config/config-file) - 了解所有配置项的详细说明
471
+ - [**AI 配置**](/config/ai-config) - 深入配置 AI commit 功能
472
+ - [**分支配置**](/config/branch-config) - 自定义分支管理行为
473
+ - [**提交配置**](/config/commit-config) - 配置提交相关功能
474
+ - [**配置示例**](/config/examples) - 查看更多实际配置案例
475
+
476
+ ---
477
+
478
+ 通过合理的配置,Git Workflow 可以完美适应你的工作流程。从简单的个人项目到复杂的企业级应用,都能找到合适的配置方案。
@@ -0,0 +1,199 @@
1
+ # 🎉 Git Wrapped - 年度编程回顾
2
+
3
+ > 将你的Git活动转化为精美的年度报告,让编程成就可视化
4
+
5
+ ## 📋 功能概述
6
+
7
+ Git Wrapped 是一个受 Spotify Wrapped 启发的功能,它分析你的Git提交历史,生成一份精美的年度编程报告。这不仅是对过去一年编程工作的总结,更是对个人成长的庆祝。
8
+
9
+ ## 🎯 核心功能
10
+
11
+ ### 基础命令
12
+ ```bash
13
+ gw wrapped # 生成当前年份报告
14
+ gw wrapped 2024 # 生成指定年份报告
15
+ gw wrapped --share # 生成可分享的图片版本
16
+ gw wrapped --format png # 指定输出格式 (png/svg/pdf)
17
+ gw wrapped --theme dark # 指定主题风格
18
+ ```
19
+
20
+ ### 高级选项
21
+ ```bash
22
+ gw wrapped --repo ./my-project # 分析特定仓库
23
+ gw wrapped --author "张三" # 分析特定作者
24
+ gw wrapped --range 2024-01-01..2024-12-31 # 自定义时间范围
25
+ gw wrapped --compare 2023 # 与去年对比
26
+ gw wrapped --team # 生成团队报告
27
+ ```
28
+
29
+ ## 📊 报告内容
30
+
31
+ ### 1. 📈 基础统计
32
+ - **总提交数**: 今年的总提交次数
33
+ - **活跃天数**: 有提交活动的天数
34
+ - **最长连击**: 连续提交的最长天数
35
+ - **代码行数**: 新增/删除的代码行数统计
36
+ - **文件变更**: 修改的文件总数
37
+
38
+ ### 2. 🏆 年度亮点
39
+ - **最忙碌的月份**: 提交最多的月份
40
+ - **最活跃时间**: 最常提交的时间段
41
+ - **最大单日提交**: 单日最多提交次数
42
+ - **里程碑时刻**: 重要的提交节点
43
+ - **项目贡献**: 贡献最多的项目
44
+
45
+ ### 3. 💻 技术分析
46
+ - **编程语言分布**: 各语言使用占比
47
+ - **文件类型统计**: 最常修改的文件类型
48
+ - **提交类型分析**: feat/fix/docs等类型分布
49
+ - **项目活跃度**: 各项目的贡献分布
50
+
51
+ ### 4. ⏰ 时间模式
52
+ - **编程习惯**: 早鸟 vs 夜猫子分析
53
+ - **工作日 vs 周末**: 工作时间分布
54
+ - **月度趋势**: 全年活跃度变化曲线
55
+ - **季节性模式**: 不同季节的编程活跃度
56
+
57
+ ### 5. 🎨 个性化洞察
58
+ - **编程风格**: 基于提交信息的风格分析
59
+ - **专注度**: 单次提交的平均文件数
60
+ - **完美主义指数**: 小提交 vs 大提交的比例
61
+ - **探索精神**: 新项目/新语言的尝试次数
62
+
63
+ ## 🎨 视觉设计
64
+
65
+ ### 终端版本
66
+ ```
67
+ ╭─────────────────────────────────────────────────────────────╮
68
+ │ 🎉 2024 Git Wrapped 🎉 │
69
+ ├─────────────────────────────────────────────────────────────┤
70
+ │ │
71
+ │ 📊 你的编程年度数据 │
72
+ │ ├─ 总提交数: 1,247 次 (+23% vs 2023) │
73
+ │ ├─ 活跃天数: 287 天 (78.6% 的日子) │
74
+ │ ├─ 最长连击: 45 天 🔥 │
75
+ │ └─ 代码贡献: +15,432 / -8,901 行 │
76
+ │ │
77
+ │ 🏆 年度亮点 │
78
+ │ ├─ 最忙月份: 三月 (156 次提交) │
79
+ │ ├─ 夜猫子指数: 68% (你更喜欢夜晚编程) │
80
+ │ ├─ 最爱语言: TypeScript (42.3%) │
81
+ │ └─ 主力项目: git-workflow (312 次提交) │
82
+ │ │
83
+ │ 🎯 成就解锁 │
84
+ │ ├─ 🔥 连击大师 (连续30天提交) │
85
+ │ ├─ 🌙 夜猫子 (凌晨提交超过100次) │
86
+ │ ├─ 🚀 效率之王 (单日最多23次提交) │
87
+ │ └─ 📝 文档达人 (docs类型提交占15%) │
88
+ │ │
89
+ ╰─────────────────────────────────────────────────────────────╯
90
+ ```
91
+
92
+ ### 分享版本 (图片)
93
+ - **卡片式设计**: 类似Instagram Story的竖版布局
94
+ - **渐变背景**: 根据主要编程语言生成配色
95
+ - **图表可视化**: 饼图、柱状图、热力图等
96
+ - **个人头像**: 集成GitHub头像
97
+ - **二维码**: 链接到个人GitHub或项目
98
+
99
+ ## 🛠️ 技术实现
100
+
101
+ ### 数据收集
102
+ ```typescript
103
+ interface GitWrappedData {
104
+ year: number;
105
+ totalCommits: number;
106
+ activeDays: number;
107
+ longestStreak: number;
108
+ linesAdded: number;
109
+ linesDeleted: number;
110
+ languages: LanguageStats[];
111
+ repositories: RepoStats[];
112
+ timePatterns: TimePattern;
113
+ commitTypes: CommitTypeStats;
114
+ achievements: Achievement[];
115
+ }
116
+ ```
117
+
118
+ ### 分析算法
119
+ 1. **Git日志解析**: 使用`git log`命令获取提交历史
120
+ 2. **语言检测**: 分析文件扩展名和Git属性
121
+ 3. **时间模式**: 统计提交时间分布
122
+ 4. **趋势分析**: 计算月度、季度变化
123
+ 5. **成就系统**: 基于规则检测特殊成就
124
+
125
+ ### 图片生成
126
+ - **Canvas API**: 使用Node.js的canvas库
127
+ - **SVG生成**: 矢量图形支持
128
+ - **模板系统**: 可配置的设计模板
129
+ - **字体支持**: 中英文字体兼容
130
+
131
+ ## 🎨 主题风格
132
+
133
+ ### 预设主题
134
+ 1. **GitHub风格**: 绿色系,类似GitHub贡献图
135
+ 2. **暗黑模式**: 深色背景,霓虹色彩
136
+ 3. **彩虹主题**: 渐变色彩,活泼风格
137
+ 4. **极简风格**: 黑白灰,简洁设计
138
+ 5. **节日主题**: 根据生成时间的节日风格
139
+
140
+ ### 自定义选项
141
+ ```bash
142
+ gw wrapped --theme custom \
143
+ --bg-color "#1a1a1a" \
144
+ --accent-color "#00ff88" \
145
+ --font-family "JetBrains Mono"
146
+ ```
147
+
148
+ ## 📱 分享功能
149
+
150
+ ### 社交媒体优化
151
+ - **Twitter**: 1200x675 横版卡片
152
+ - **Instagram**: 1080x1920 竖版故事
153
+ - **LinkedIn**: 1200x627 专业风格
154
+ - **微信朋友圈**: 正方形 1080x1080
155
+
156
+ ### 导出格式
157
+ - **PNG**: 高质量位图,适合分享
158
+ - **SVG**: 矢量图形,可编辑
159
+ - **PDF**: 打印友好格式
160
+ - **HTML**: 交互式网页版本
161
+
162
+ ## 🔮 未来扩展
163
+
164
+ ### v1.0 增强功能
165
+ - [ ] **AI洞察**: 使用AI分析编程模式并给出建议
166
+ - [ ] **团队对比**: 与团队成员的数据对比
167
+ - [ ] **目标设定**: 基于今年数据设定明年目标
168
+ - [ ] **历史对比**: 多年数据的趋势分析
169
+
170
+ ### v2.0 高级功能
171
+ - [ ] **Web仪表板**: 在线查看和分享
172
+ - [ ] **实时更新**: 年度数据的实时追踪
173
+ - [ ] **集成API**: 与其他平台的数据整合
174
+ - [ ] **团队版本**: 企业级团队分析
175
+
176
+ ## 💡 使用场景
177
+
178
+ ### 个人用途
179
+ - **年终总结**: 个人技术成长回顾
180
+ - **简历亮点**: 展示编程活跃度
181
+ - **社交分享**: 在社交媒体展示成就
182
+ - **自我激励**: 通过数据可视化保持动力
183
+
184
+ ### 团队用途
185
+ - **团队回顾**: 团队年度技术总结
186
+ - **绩效展示**: 可视化团队贡献
187
+ - **文化建设**: 增强团队凝聚力
188
+ - **招聘宣传**: 展示团队技术实力
189
+
190
+ ## 🎯 成功指标
191
+
192
+ - **用户参与度**: 生成报告的用户数量
193
+ - **分享率**: 用户分享图片的比例
194
+ - **回访率**: 用户重复使用的频率
195
+ - **社交影响**: 在社交媒体的传播效果
196
+
197
+ ---
198
+
199
+ *这个功能将让Git Workflow不仅仅是一个工具,更是一个让开发者为自己的编程旅程感到骄傲的平台。*