@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,468 @@
|
|
|
1
|
+
# 分支命令
|
|
2
|
+
|
|
3
|
+
分支管理是 Git Workflow 的核心功能之一,提供了创建和删除分支的简化操作。
|
|
4
|
+
|
|
5
|
+
## 📋 命令概览
|
|
6
|
+
|
|
7
|
+
| 命令 | 别名 | 功能 |
|
|
8
|
+
| ------------------------------ | ----------------- | ----------------- |
|
|
9
|
+
| `gw feature [--base <branch>]` | `gw feat`, `gw f` | 创建 feature 分支 |
|
|
10
|
+
| `gw hotfix [--base <branch>]` | `gw fix`, `gw h` | 创建 hotfix 分支 |
|
|
11
|
+
| `gw delete [branch]` | `gw del`, `gw d` | 删除本地/远程分支 |
|
|
12
|
+
|
|
13
|
+
## ✨ 创建 Feature 分支
|
|
14
|
+
|
|
15
|
+
### 基本用法
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
gw f
|
|
19
|
+
# 或
|
|
20
|
+
gw feature
|
|
21
|
+
gw feat
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 交互式流程
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
gw f
|
|
28
|
+
? 请输入 Story ID (可跳过): PROJ-123
|
|
29
|
+
? 请输入描述: add-user-login
|
|
30
|
+
✔ 分支创建成功: feature/20260111-PROJ-123-add-user-login
|
|
31
|
+
? 是否推送到远程? 是
|
|
32
|
+
✔ 已推送到远程: origin/feature/20260111-PROJ-123-add-user-login
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 高级选项
|
|
36
|
+
|
|
37
|
+
#### 指定基础分支
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 基于 develop 分支创建
|
|
41
|
+
gw f --base develop
|
|
42
|
+
|
|
43
|
+
# 基于指定分支创建
|
|
44
|
+
gw f --base release/1.0
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### 自动检测基础分支
|
|
48
|
+
|
|
49
|
+
如果不指定 `--base` 参数,Git Workflow 会自动检测:
|
|
50
|
+
|
|
51
|
+
1. 检查配置文件中的 `baseBranch` 设置
|
|
52
|
+
2. 自动检测 `main` 或 `master` 分支
|
|
53
|
+
3. 使用当前分支作为基础分支
|
|
54
|
+
|
|
55
|
+
### 分支命名规范
|
|
56
|
+
|
|
57
|
+
**生成格式:**
|
|
58
|
+
```
|
|
59
|
+
feature/YYYYMMDD-[ID-]description
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**示例:**
|
|
63
|
+
```bash
|
|
64
|
+
# 有 ID 的情况
|
|
65
|
+
feature/20260111-PROJ-123-add-user-login
|
|
66
|
+
|
|
67
|
+
# 无 ID 的情况(跳过 ID 输入)
|
|
68
|
+
feature/20260111-add-user-login
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**命名优势:**
|
|
72
|
+
- 📅 **时间排序** - 按创建日期自然排序
|
|
73
|
+
- 🔍 **易于搜索** - 可以按日期或 ID 快速查找
|
|
74
|
+
- 📋 **可追溯性** - 每个分支都能追溯到具体需求
|
|
75
|
+
- 🤖 **自动生成** - 无需手动输入复杂的分支名
|
|
76
|
+
|
|
77
|
+
### 未提交更改处理
|
|
78
|
+
|
|
79
|
+
如果当前分支有未提交的更改,Git Workflow 会智能处理:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
gw f
|
|
83
|
+
# 检测到未提交的更改:
|
|
84
|
+
# M src/index.ts
|
|
85
|
+
# M src/utils.ts
|
|
86
|
+
# ────────────────────────────────────────
|
|
87
|
+
# ? 是否暂存 (stash) 这些更改后继续?
|
|
88
|
+
# 是,暂存更改并创建分支
|
|
89
|
+
# 否,取消操作
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
选择"是"后:
|
|
93
|
+
```bash
|
|
94
|
+
✔ 更改已暂存到 stash
|
|
95
|
+
✔ 分支创建成功: feature/20260111-PROJ-123-add-login
|
|
96
|
+
💡 提示: 使用 'gw s' 可以恢复暂存的更改
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 🐛 创建 Hotfix 分支
|
|
100
|
+
|
|
101
|
+
### 基本用法
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
gw h
|
|
105
|
+
# 或
|
|
106
|
+
gw hotfix
|
|
107
|
+
gw fix
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 交互式流程
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
gw h
|
|
114
|
+
? 请输入 Issue ID (可跳过): BUG-456
|
|
115
|
+
? 请输入描述: fix-login-crash
|
|
116
|
+
✔ 分支创建成功: hotfix/20260111-BUG-456-fix-login-crash
|
|
117
|
+
? 是否推送到远程? 是
|
|
118
|
+
✔ 已推送到远程: origin/hotfix/20260111-BUG-456-fix-login-crash
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Hotfix 特点
|
|
122
|
+
|
|
123
|
+
**与 Feature 分支的区别:**
|
|
124
|
+
- 🚨 **紧急性** - 用于紧急修复生产环境问题
|
|
125
|
+
- 🎯 **基础分支** - 通常基于 `main` 分支创建
|
|
126
|
+
- 🔄 **合并策略** - 需要同时合并到 `main` 和 `develop`
|
|
127
|
+
- 📝 **ID 标签** - 默认提示 "Issue ID" 而不是 "Story ID"
|
|
128
|
+
|
|
129
|
+
**典型使用场景:**
|
|
130
|
+
- 生产环境 Bug 修复
|
|
131
|
+
- 安全漏洞修复
|
|
132
|
+
- 关键功能故障修复
|
|
133
|
+
- 性能问题紧急优化
|
|
134
|
+
|
|
135
|
+
## 🗑️ 删除分支
|
|
136
|
+
|
|
137
|
+
### 基本用法
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
gw d
|
|
141
|
+
# 或
|
|
142
|
+
gw delete
|
|
143
|
+
gw del
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 交互式选择
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
gw d
|
|
150
|
+
? 选择要删除的分支:
|
|
151
|
+
❯ feature/20260105-PROJ-100-old-feature (本地+远程) 3 days ago
|
|
152
|
+
feature/20260103-test-branch (仅本地) 5 days ago
|
|
153
|
+
hotfix/20260101-BUG-200-urgent-fix (本地+远程) 1 week ago
|
|
154
|
+
取消
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**分支信息说明:**
|
|
158
|
+
- **分支名** - 完整的分支名称
|
|
159
|
+
- **状态** - 显示是否存在远程分支
|
|
160
|
+
- **时间** - 最后提交时间,按最近使用排序
|
|
161
|
+
|
|
162
|
+
### 删除确认
|
|
163
|
+
|
|
164
|
+
选择分支后会显示详细信息并确认:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
分支信息:
|
|
168
|
+
名称: feature/20260105-PROJ-100-old-feature
|
|
169
|
+
最后提交: 3 days ago
|
|
170
|
+
提交信息: feat(user): 添加用户管理功能
|
|
171
|
+
状态: 本地+远程分支都存在
|
|
172
|
+
────────────────────────────────────────
|
|
173
|
+
? 确认删除?
|
|
174
|
+
❯ 是,删除本地和远程分支
|
|
175
|
+
仅删除本地分支
|
|
176
|
+
取消
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### 删除结果
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
✔ 本地分支已删除: feature/20260105-PROJ-100-old-feature
|
|
183
|
+
✔ 远程分支已删除: origin/feature/20260105-PROJ-100-old-feature
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 直接删除指定分支
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# 直接删除指定分支
|
|
190
|
+
gw d feature/old-branch
|
|
191
|
+
|
|
192
|
+
# 系统会自动检测并询问是否删除远程分支
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 批量删除
|
|
196
|
+
|
|
197
|
+
虽然不支持多选,但可以连续删除:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
gw d
|
|
201
|
+
# 删除第一个分支后,会自动返回分支列表
|
|
202
|
+
# 可以继续选择删除其他分支
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### 安全保护
|
|
206
|
+
|
|
207
|
+
**保护机制:**
|
|
208
|
+
- 🛡️ **当前分支保护** - 不能删除当前所在的分支
|
|
209
|
+
- 🛡️ **主分支保护** - 不会显示 main/master/develop 等主分支
|
|
210
|
+
- 🛡️ **确认机制** - 删除前需要明确确认
|
|
211
|
+
- 🛡️ **状态检查** - 显示分支的本地/远程状态
|
|
212
|
+
|
|
213
|
+
**错误处理:**
|
|
214
|
+
```bash
|
|
215
|
+
❌ 无法删除分支: 当前正在使用此分支
|
|
216
|
+
❌ 远程分支删除失败: 权限不足
|
|
217
|
+
❌ 分支不存在: feature/non-existent-branch
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## ⚙️ 配置选项
|
|
221
|
+
|
|
222
|
+
### 分支前缀配置
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"featurePrefix": "feature",
|
|
227
|
+
"hotfixPrefix": "hotfix"
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**自定义前缀示例:**
|
|
232
|
+
```json
|
|
233
|
+
{
|
|
234
|
+
"featurePrefix": "feat",
|
|
235
|
+
"hotfixPrefix": "fix"
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
生成的分支名:
|
|
240
|
+
```
|
|
241
|
+
feat/20260111-PROJ-123-add-login
|
|
242
|
+
fix/20260111-BUG-456-fix-crash
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### ID 配置
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"requireId": true,
|
|
250
|
+
"featureIdLabel": "Story ID",
|
|
251
|
+
"hotfixIdLabel": "Issue ID"
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**强制要求 ID:**
|
|
256
|
+
```json
|
|
257
|
+
{
|
|
258
|
+
"requireId": true
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
设置后,创建分支时必须填写 ID,不能跳过。
|
|
263
|
+
|
|
264
|
+
**自定义 ID 标签:**
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"featureIdLabel": "Jira ID",
|
|
268
|
+
"hotfixIdLabel": "Bug ID"
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### 基础分支配置
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"baseBranch": "develop"
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
设置后,所有新分支都会基于 `develop` 创建,除非使用 `--base` 参数覆盖。
|
|
281
|
+
|
|
282
|
+
### 自动推送配置
|
|
283
|
+
|
|
284
|
+
```json
|
|
285
|
+
{
|
|
286
|
+
"autoPush": true
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**配置选项:**
|
|
291
|
+
- `true` - 创建分支后自动推送,不询问
|
|
292
|
+
- `false` - 创建分支后不推送,不询问
|
|
293
|
+
- 不设置 - 每次创建分支时询问(默认行为)
|
|
294
|
+
|
|
295
|
+
## 🎯 使用场景
|
|
296
|
+
|
|
297
|
+
### 场景一:日常功能开发
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# 1. 创建功能分支
|
|
301
|
+
gw f
|
|
302
|
+
# 输入: PROJ-123, add-user-profile
|
|
303
|
+
|
|
304
|
+
# 2. 开发代码...
|
|
305
|
+
|
|
306
|
+
# 3. 提交代码
|
|
307
|
+
gw c
|
|
308
|
+
|
|
309
|
+
# 4. 推送到远程(如果还没推送)
|
|
310
|
+
git push origin feature/20260111-PROJ-123-add-user-profile
|
|
311
|
+
|
|
312
|
+
# 5. 创建 Pull Request
|
|
313
|
+
|
|
314
|
+
# 6. 合并后删除分支
|
|
315
|
+
gw d
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### 场景二:紧急修复
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
# 1. 创建 hotfix 分支(基于 main)
|
|
322
|
+
gw h --base main
|
|
323
|
+
# 输入: BUG-456, fix-payment-error
|
|
324
|
+
|
|
325
|
+
# 2. 修复代码...
|
|
326
|
+
|
|
327
|
+
# 3. 提交修复
|
|
328
|
+
gw c
|
|
329
|
+
|
|
330
|
+
# 4. 合并到 main 和 develop
|
|
331
|
+
|
|
332
|
+
# 5. 删除 hotfix 分支
|
|
333
|
+
gw d
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### 场景三:实验性功能
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# 1. 创建实验分支
|
|
340
|
+
gw f
|
|
341
|
+
# 输入: EXP-789, try-new-algorithm
|
|
342
|
+
|
|
343
|
+
# 2. 实验开发...
|
|
344
|
+
|
|
345
|
+
# 3. 如果实验失败,直接删除分支
|
|
346
|
+
gw d
|
|
347
|
+
# 选择实验分支删除
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### 场景四:团队协作
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# 1. 基于最新的 develop 创建分支
|
|
354
|
+
git checkout develop
|
|
355
|
+
git pull origin develop
|
|
356
|
+
gw f --base develop
|
|
357
|
+
|
|
358
|
+
# 2. 开发完成后推送
|
|
359
|
+
git push origin feature/20260111-PROJ-123-add-feature
|
|
360
|
+
|
|
361
|
+
# 3. 创建 Pull Request 到 develop
|
|
362
|
+
|
|
363
|
+
# 4. 代码审查通过后,删除本地分支
|
|
364
|
+
gw d
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## 🔧 高级技巧
|
|
368
|
+
|
|
369
|
+
### 技巧一:快速切换到新分支
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
# 创建分支后自动切换
|
|
373
|
+
gw f
|
|
374
|
+
# 分支创建成功后会自动切换到新分支
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### 技巧二:基于特定提交创建分支
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# 先切换到目标提交
|
|
381
|
+
git checkout abc1234
|
|
382
|
+
|
|
383
|
+
# 然后创建分支
|
|
384
|
+
gw f
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### 技巧三:批量清理已合并分支
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
# 使用 Git Workflow 逐个删除
|
|
391
|
+
gw d
|
|
392
|
+
|
|
393
|
+
# 或使用 Git 命令批量删除已合并分支
|
|
394
|
+
git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### 技巧四:恢复误删的分支
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
# 查看最近的操作
|
|
401
|
+
git reflog
|
|
402
|
+
|
|
403
|
+
# 恢复分支
|
|
404
|
+
git checkout -b recovered-branch <commit-hash>
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
## 🚨 常见问题
|
|
408
|
+
|
|
409
|
+
### 问题一:分支名包含特殊字符
|
|
410
|
+
|
|
411
|
+
**问题:**
|
|
412
|
+
```bash
|
|
413
|
+
gw f
|
|
414
|
+
? 请输入描述: fix bug #123
|
|
415
|
+
❌ 分支名包含无效字符
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
**解决方案:**
|
|
419
|
+
- 避免使用 `#`, `@`, `空格` 等特殊字符
|
|
420
|
+
- 使用 `-` 或 `_` 连接单词
|
|
421
|
+
- 推荐格式:`fix-bug-123`
|
|
422
|
+
|
|
423
|
+
### 问题二:无法删除远程分支
|
|
424
|
+
|
|
425
|
+
**问题:**
|
|
426
|
+
```bash
|
|
427
|
+
❌ 远程分支删除失败: 权限不足
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**解决方案:**
|
|
431
|
+
1. 检查是否有推送权限
|
|
432
|
+
2. 确认远程分支是否存在
|
|
433
|
+
3. 手动删除:`git push origin --delete branch-name`
|
|
434
|
+
|
|
435
|
+
### 问题三:基础分支不存在
|
|
436
|
+
|
|
437
|
+
**问题:**
|
|
438
|
+
```bash
|
|
439
|
+
❌ 基础分支 'develop' 不存在
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
**解决方案:**
|
|
443
|
+
1. 检查分支名是否正确
|
|
444
|
+
2. 拉取远程分支:`git fetch origin develop:develop`
|
|
445
|
+
3. 或使用其他基础分支:`gw f --base main`
|
|
446
|
+
|
|
447
|
+
### 问题四:分支已存在
|
|
448
|
+
|
|
449
|
+
**问题:**
|
|
450
|
+
```bash
|
|
451
|
+
❌ 分支 'feature/20260111-PROJ-123-add-login' 已存在
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
**解决方案:**
|
|
455
|
+
1. 使用不同的描述
|
|
456
|
+
2. 切换到现有分支:`git checkout feature/20260111-PROJ-123-add-login`
|
|
457
|
+
3. 或删除现有分支后重新创建
|
|
458
|
+
|
|
459
|
+
## 📚 相关命令
|
|
460
|
+
|
|
461
|
+
- [**gw c**](/commands/commit) - 提交代码到分支
|
|
462
|
+
- [**gw s**](/commands/stash) - 管理代码暂存
|
|
463
|
+
- [**gw t**](/commands/tag) - 为分支创建版本标签
|
|
464
|
+
- [**gw r**](/commands/release) - 发布版本
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
分支管理是 Git 工作流的基础,通过 Git Workflow 的分支命令,你可以轻松创建规范的分支名称,高效管理分支生命周期。
|