@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,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不仅仅是一个工具,更是一个让开发者为自己的编程旅程感到骄傲的平台。*
|