@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,426 @@
|
|
|
1
|
+
# 最佳实践
|
|
2
|
+
|
|
3
|
+
本指南总结了使用 Git Workflow 的最佳实践,帮助你和团队建立高效、规范的 Git 工作流程。
|
|
4
|
+
|
|
5
|
+
## 🎯 工作流程设计
|
|
6
|
+
|
|
7
|
+
### 选择合适的工作流模式
|
|
8
|
+
|
|
9
|
+
根据团队规模和项目特点选择合适的工作流:
|
|
10
|
+
|
|
11
|
+
#### 个人开发 - GitHub Flow
|
|
12
|
+
|
|
13
|
+
```mermaid
|
|
14
|
+
graph LR
|
|
15
|
+
A[main] --> B[feature/xxx]
|
|
16
|
+
B --> C[开发代码]
|
|
17
|
+
C --> D[gw c 提交]
|
|
18
|
+
D --> E[Pull Request]
|
|
19
|
+
E --> F[合并到main]
|
|
20
|
+
F --> G[gw d 清理分支]
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**配置:**
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"baseBranch": "main",
|
|
27
|
+
"requireId": false,
|
|
28
|
+
"autoPush": true
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
#### 团队协作 - Git Flow
|
|
33
|
+
|
|
34
|
+
```mermaid
|
|
35
|
+
graph LR
|
|
36
|
+
A[main] --> B[develop]
|
|
37
|
+
B --> C[feature/xxx]
|
|
38
|
+
B --> D[hotfix/xxx]
|
|
39
|
+
C --> E[合并到develop]
|
|
40
|
+
D --> A
|
|
41
|
+
D --> B
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**配置:**
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"baseBranch": "develop",
|
|
48
|
+
"requireId": true,
|
|
49
|
+
"featureIdLabel": "Jira ID",
|
|
50
|
+
"hotfixIdLabel": "Bug ID",
|
|
51
|
+
"autoPush": true
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### 企业级 - 严格审查流程
|
|
56
|
+
|
|
57
|
+
**配置:**
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"featurePrefix": "feat",
|
|
61
|
+
"hotfixPrefix": "fix",
|
|
62
|
+
"requireId": true,
|
|
63
|
+
"useEmoji": false,
|
|
64
|
+
"autoStage": false
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 📋 日常开发流程
|
|
69
|
+
|
|
70
|
+
### 标准功能开发流程
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# 1. 创建功能分支
|
|
74
|
+
gw f
|
|
75
|
+
# 输入: PROJ-123, add-user-profile
|
|
76
|
+
|
|
77
|
+
# 2. 开发代码...
|
|
78
|
+
|
|
79
|
+
# 3. 提交代码(推荐使用 AI)
|
|
80
|
+
gw c
|
|
81
|
+
|
|
82
|
+
# 4. 推送并创建 PR
|
|
83
|
+
git push origin feature/20260111-PROJ-123-add-user-profile
|
|
84
|
+
|
|
85
|
+
# 5. 合并后清理分支
|
|
86
|
+
gw d
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 紧急修复流程
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# 1. 创建 hotfix 分支
|
|
93
|
+
gw h --base main
|
|
94
|
+
# 输入: BUG-456, fix-payment-error
|
|
95
|
+
|
|
96
|
+
# 2. 修复问题
|
|
97
|
+
gw c
|
|
98
|
+
|
|
99
|
+
# 3. 创建补丁版本
|
|
100
|
+
gw t
|
|
101
|
+
# 选择: patch → v1.2.1
|
|
102
|
+
|
|
103
|
+
# 4. 合并到主分支和开发分支
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 版本发布流程
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# 1. 更新版本号
|
|
110
|
+
gw r
|
|
111
|
+
# 选择: minor → 1.3.0
|
|
112
|
+
|
|
113
|
+
# 2. 创建发布标签
|
|
114
|
+
gw t
|
|
115
|
+
# 创建 v1.3.0
|
|
116
|
+
|
|
117
|
+
# 3. 清理功能分支
|
|
118
|
+
gw d
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## ⚙️ 配置管理策略
|
|
122
|
+
|
|
123
|
+
### 分层配置原则
|
|
124
|
+
|
|
125
|
+
**全局配置(个人偏好):**
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"aiCommit": {
|
|
129
|
+
"enabled": true,
|
|
130
|
+
"provider": "github",
|
|
131
|
+
"language": "zh-CN"
|
|
132
|
+
},
|
|
133
|
+
"useEmoji": true,
|
|
134
|
+
"autoStage": true
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**项目配置(团队规范):**
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"baseBranch": "develop",
|
|
142
|
+
"requireId": true,
|
|
143
|
+
"featureIdLabel": "Story ID",
|
|
144
|
+
"autoPush": true
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 配置文档化
|
|
149
|
+
|
|
150
|
+
将项目配置提交到版本控制并文档化:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# 提交配置文件
|
|
154
|
+
git add .gwrc.json
|
|
155
|
+
git commit -m "chore: 添加 git-workflow 配置"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
在 README 中说明配置:
|
|
159
|
+
```markdown
|
|
160
|
+
## Git Workflow 配置
|
|
161
|
+
|
|
162
|
+
本项目使用 git-workflow 进行版本管理:
|
|
163
|
+
|
|
164
|
+
- 分支前缀:feature/、hotfix/
|
|
165
|
+
- 必须填写 Story ID
|
|
166
|
+
- 基于 develop 分支开发
|
|
167
|
+
- 自动推送到远程
|
|
168
|
+
|
|
169
|
+
### 使用方法
|
|
170
|
+
1. 安装:`npm install -g @zjex/git-workflow`
|
|
171
|
+
2. 创建分支:`gw f`
|
|
172
|
+
3. 提交代码:`gw c`
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## 🤝 团队协作规范
|
|
176
|
+
|
|
177
|
+
### 统一工具版本
|
|
178
|
+
|
|
179
|
+
在项目中指定工具版本:
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"engines": {
|
|
184
|
+
"git-workflow": "^0.2.24"
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### 制定工作流程规范
|
|
190
|
+
|
|
191
|
+
**分支管理规范:**
|
|
192
|
+
- Feature 分支基于 develop 创建
|
|
193
|
+
- Hotfix 分支基于 main 创建
|
|
194
|
+
- 分支合并后及时删除
|
|
195
|
+
- 定期清理过期分支
|
|
196
|
+
|
|
197
|
+
**提交信息规范:**
|
|
198
|
+
- 优先使用 AI 生成提交信息
|
|
199
|
+
- 遵循 Conventional Commits 格式
|
|
200
|
+
- 包含必要的 scope 和描述
|
|
201
|
+
- 关联相关的 Issue
|
|
202
|
+
|
|
203
|
+
**代码审查规范:**
|
|
204
|
+
- 所有代码变更必须经过审查
|
|
205
|
+
- 提交信息必须规范
|
|
206
|
+
- 分支命名必须符合规范
|
|
207
|
+
- CI 检查必须通过
|
|
208
|
+
|
|
209
|
+
### Pull Request 模板
|
|
210
|
+
|
|
211
|
+
```markdown
|
|
212
|
+
## 变更类型
|
|
213
|
+
- [ ] 新功能 (feature)
|
|
214
|
+
- [ ] Bug 修复 (fix)
|
|
215
|
+
- [ ] 文档更新 (docs)
|
|
216
|
+
|
|
217
|
+
## 变更描述
|
|
218
|
+
简要描述本次变更的内容和原因。
|
|
219
|
+
|
|
220
|
+
## 测试说明
|
|
221
|
+
- [ ] 单元测试通过
|
|
222
|
+
- [ ] 手动测试完成
|
|
223
|
+
|
|
224
|
+
## 相关 Issue
|
|
225
|
+
Closes #123
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## 📊 质量保证
|
|
229
|
+
|
|
230
|
+
### 自动化检查
|
|
231
|
+
|
|
232
|
+
使用 CI/CD 集成检查:
|
|
233
|
+
|
|
234
|
+
```yaml
|
|
235
|
+
# .github/workflows/check.yml
|
|
236
|
+
name: Git Workflow Check
|
|
237
|
+
on:
|
|
238
|
+
pull_request:
|
|
239
|
+
branches: [main, develop]
|
|
240
|
+
|
|
241
|
+
jobs:
|
|
242
|
+
check-branch-name:
|
|
243
|
+
runs-on: ubuntu-latest
|
|
244
|
+
steps:
|
|
245
|
+
- name: Check branch name
|
|
246
|
+
run: |
|
|
247
|
+
if [[ ! "${{ github.head_ref }}" =~ ^(feature|hotfix)/[0-9]{8}-.+ ]]; then
|
|
248
|
+
echo "分支名不符合规范"
|
|
249
|
+
exit 1
|
|
250
|
+
fi
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### 度量和监控
|
|
254
|
+
|
|
255
|
+
定期检查工作流质量:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
#!/bin/bash
|
|
259
|
+
# 分支统计
|
|
260
|
+
echo "📊 活跃分支数量:"
|
|
261
|
+
git branch -r | grep -E 'origin/(feature|hotfix)/' | wc -l
|
|
262
|
+
|
|
263
|
+
# 提交规范性检查
|
|
264
|
+
echo "📊 提交信息规范性:"
|
|
265
|
+
git log --oneline --since="1 week ago" | \
|
|
266
|
+
grep -E '^[a-f0-9]+ (feat|fix|docs|style|refactor|perf|test|build|ci|chore)' | \
|
|
267
|
+
wc -l
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## 🚀 性能优化
|
|
271
|
+
|
|
272
|
+
### 提高执行效率
|
|
273
|
+
|
|
274
|
+
**使用快捷命令:**
|
|
275
|
+
```bash
|
|
276
|
+
# 设置别名
|
|
277
|
+
alias gwf='gw f'
|
|
278
|
+
alias gwc='gw c'
|
|
279
|
+
alias gwt='gw t'
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**优化配置:**
|
|
283
|
+
```json
|
|
284
|
+
{
|
|
285
|
+
"autoPush": true, // 减少交互
|
|
286
|
+
"autoStage": true, // 自动暂存
|
|
287
|
+
"defaultTagPrefix": "v", // 跳过选择
|
|
288
|
+
"aiCommit": {
|
|
289
|
+
"model": "gpt-4o-mini", // 使用快速模型
|
|
290
|
+
"maxTokens": 150 // 减少 token 消耗
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### 本地化 AI 模型
|
|
296
|
+
|
|
297
|
+
对于高频使用或隐私要求高的场景:
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# 安装 Ollama
|
|
301
|
+
curl -fsSL https://ollama.com/install.sh | sh
|
|
302
|
+
|
|
303
|
+
# 下载模型
|
|
304
|
+
ollama pull llama3.2:3b
|
|
305
|
+
|
|
306
|
+
# 配置使用本地模型
|
|
307
|
+
{
|
|
308
|
+
"aiCommit": {
|
|
309
|
+
"provider": "ollama",
|
|
310
|
+
"model": "llama3.2:3b"
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## 🔧 故障排除
|
|
316
|
+
|
|
317
|
+
### 常见问题解决
|
|
318
|
+
|
|
319
|
+
**分支管理问题:**
|
|
320
|
+
- 定期清理已合并分支:`gw d`
|
|
321
|
+
- 强制要求 ID:`"requireId": true`
|
|
322
|
+
- 统一分支前缀:`"featurePrefix": "feat"`
|
|
323
|
+
|
|
324
|
+
**提交信息问题:**
|
|
325
|
+
- 启用 AI commit 提高规范性
|
|
326
|
+
- 配置 commitlint 进行检查
|
|
327
|
+
- 团队培训提高意识
|
|
328
|
+
|
|
329
|
+
**性能问题:**
|
|
330
|
+
- 使用本地 AI 模型
|
|
331
|
+
- 优化网络连接
|
|
332
|
+
- 减少不必要的交互
|
|
333
|
+
|
|
334
|
+
### 应急处理
|
|
335
|
+
|
|
336
|
+
**误删分支恢复:**
|
|
337
|
+
```bash
|
|
338
|
+
# 查看操作历史
|
|
339
|
+
git reflog
|
|
340
|
+
|
|
341
|
+
# 恢复分支
|
|
342
|
+
git checkout -b recovered-branch <commit-hash>
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**配置文件损坏:**
|
|
346
|
+
```bash
|
|
347
|
+
# 重新初始化配置
|
|
348
|
+
gw init --reset
|
|
349
|
+
|
|
350
|
+
# 或手动修复 JSON 语法
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## 💡 进阶技巧
|
|
354
|
+
|
|
355
|
+
### 自定义工作流
|
|
356
|
+
|
|
357
|
+
根据项目特点自定义工作流:
|
|
358
|
+
|
|
359
|
+
```json
|
|
360
|
+
{
|
|
361
|
+
"featurePrefix": "feat",
|
|
362
|
+
"hotfixPrefix": "fix",
|
|
363
|
+
"requireId": true,
|
|
364
|
+
"featureIdLabel": "需求编号",
|
|
365
|
+
"hotfixIdLabel": "缺陷编号",
|
|
366
|
+
"commitEmojis": {
|
|
367
|
+
"feat": "🎉",
|
|
368
|
+
"fix": "🔧"
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### 脚本化操作
|
|
374
|
+
|
|
375
|
+
创建自动化脚本:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
#!/bin/bash
|
|
379
|
+
# auto-release.sh
|
|
380
|
+
set -e
|
|
381
|
+
|
|
382
|
+
echo "🚀 开始发布流程..."
|
|
383
|
+
npm test
|
|
384
|
+
gw r
|
|
385
|
+
gw c
|
|
386
|
+
gw t
|
|
387
|
+
git push origin main --tags
|
|
388
|
+
npm publish
|
|
389
|
+
echo "✅ 发布完成!"
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### 集成其他工具
|
|
393
|
+
|
|
394
|
+
与现有工具链集成:
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
# 与 commitizen 集成
|
|
398
|
+
npm install -g commitizen cz-conventional-changelog
|
|
399
|
+
|
|
400
|
+
# 与 husky 集成进行 pre-commit 检查
|
|
401
|
+
npx husky add .husky/pre-commit "gw --check-branch-name"
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
## 📚 持续改进
|
|
405
|
+
|
|
406
|
+
### 定期回顾
|
|
407
|
+
|
|
408
|
+
- **每周回顾** - 检查分支清理情况
|
|
409
|
+
- **每月回顾** - 分析提交质量和工作流效率
|
|
410
|
+
- **季度回顾** - 评估配置是否需要调整
|
|
411
|
+
|
|
412
|
+
### 团队反馈
|
|
413
|
+
|
|
414
|
+
- 收集团队使用反馈
|
|
415
|
+
- 根据项目发展调整配置
|
|
416
|
+
- 分享最佳实践和技巧
|
|
417
|
+
|
|
418
|
+
### 工具更新
|
|
419
|
+
|
|
420
|
+
- 定期更新到最新版本:`gw upt`
|
|
421
|
+
- 关注新功能和改进
|
|
422
|
+
- 参与社区讨论和贡献
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
遵循这些最佳实践,你和团队可以建立高效、规范的 Git 工作流程。记住,最佳实践需要根据具体情况调整,关键是保持一致性和持续改进。
|