$npx -y skills add youlaitech/youlai-skills --skill gitGit version control automation standards. Use this skill when generating commit messages, managing version numbers, creating tags, or generating changelogs and release notes.
| 1 | # Git 版本管理自动化规范 |
| 2 | |
| 3 | ## 触发条件 |
| 4 | |
| 5 | - Generate conventional commit messages |
| 6 | - Manage semantic versioning |
| 7 | - Create Git tags |
| 8 | - Generate changelogs |
| 9 | - Generate release notes |
| 10 | - Automate version release workflows |
| 11 | |
| 12 | --- |
| 13 | |
| 14 | ## Part 1: Commit Message 规范 |
| 15 | |
| 16 | ### 1.1 格式 |
| 17 | |
| 18 | ``` |
| 19 | <type>(<scope>): <subject> |
| 20 | |
| 21 | <body> |
| 22 | |
| 23 | <footer> |
| 24 | ``` |
| 25 | |
| 26 | ### 1.2 Type 类型 |
| 27 | |
| 28 | | Type | 说明 | 示例 | |
| 29 | |------|------|------| |
| 30 | | `feat` | 新功能 | `feat(user): 添加用户登录功能` | |
| 31 | | `fix` | Bug 修复 | `fix(auth): 修复 Token 过期验证问题` | |
| 32 | | `docs` | 文档更新 | `docs(readme): 更新安装说明` | |
| 33 | | `style` | 代码格式(不影响功能) | `style: 格式化代码缩进` | |
| 34 | | `refactor` | 重构(非新功能、非 Bug 修复) | `refactor(user): 重构用户服务层` | |
| 35 | | `perf` | 性能优化 | `perf(query): 优化分页查询性能` | |
| 36 | | `test` | 测试相关 | `test(user): 添加用户服务单元测试` | |
| 37 | | `chore` | 构建/工具相关 | `chore: 更新依赖版本` | |
| 38 | | `ci` | CI/CD 相关 | `ci: 添加 GitHub Actions 工作流` | |
| 39 | | `build` | 构建系统相关 | `build: 升级 webpack 配置` | |
| 40 | | `revert` | 回滚提交 | `revert: 回滚用户登录功能` | |
| 41 | |
| 42 | ### 1.3 Scope 范围 |
| 43 | |
| 44 | | Scope | 说明 | |
| 45 | |-------|------| |
| 46 | | `auth` | 认证授权 | |
| 47 | | `user` / `role` / `menu` / `dept` / `dict` / `notice` | 业务模块 | |
| 48 | | `log` / `file` / `api` | 日志/文件/接口 | |
| 49 | | `db` / `config` / `deps` | 数据库/配置/依赖 | |
| 50 | |
| 51 | ### 1.4 自动生成流程 |
| 52 | |
| 53 | 1. 分析变更:`git diff --cached --stat && git diff --cached --name-status` |
| 54 | 2. 识别类型:新增文件 → `feat`,修改配置 → `chore`,删除文件 → `refactor` |
| 55 | 3. 生成 Message 示例: |
| 56 | |
| 57 | ``` |
| 58 | feat(user): 添加用户头像上传功能 |
| 59 | |
| 60 | - 支持 JPG/PNG 格式 |
| 61 | - 限制文件大小 2MB |
| 62 | - 自动压缩图片 |
| 63 | ``` |
| 64 | |
| 65 | --- |
| 66 | |
| 67 | ## Part 2: 语义化版本规范 |
| 68 | |
| 69 | ### 2.1 版本格式 |
| 70 | |
| 71 | ``` |
| 72 | MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD] |
| 73 | ``` |
| 74 | |
| 75 | | 部分 | 说明 | 更新时机 | |
| 76 | |------|------|----------| |
| 77 | | MAJOR | 主版本号 | 不兼容的 API 变更 | |
| 78 | | MINOR | 次版本号 | 向后兼容的功能新增 | |
| 79 | | PATCH | 修订号 | 向后兼容的问题修复 | |
| 80 | | PRERELEASE | 预发布标识 | `alpha`, `beta`, `rc` | |
| 81 | |
| 82 | ### 2.2 版本递增规则 |
| 83 | |
| 84 | | Commit Type | 版本递增 | |
| 85 | |-------------|----------| |
| 86 | | `feat` | MINOR +1, PATCH = 0 | |
| 87 | | `fix` | PATCH +1 | |
| 88 | | `feat!` 或 `BREAKING CHANGE` | MAJOR +1, MINOR = 0, PATCH = 0 | |
| 89 | | `docs` / `style` / `refactor` / `test` / `chore` | 不递增 | |
| 90 | |
| 91 | ### 2.3 预发布版本 |
| 92 | |
| 93 | | 阶段 | 版本示例 | 说明 | |
| 94 | |------|----------|------| |
| 95 | | Alpha | `1.0.0-alpha.1` | 内部测试 | |
| 96 | | Beta | `1.0.0-beta.1` | 公开测试 | |
| 97 | | Release Candidate | `1.0.0-rc.1` | 候选发布 | |
| 98 | | Release | `1.0.0` | 正式发布 | |
| 99 | |
| 100 | ### 2.4 版本文件同步 |
| 101 | |
| 102 | | 项目类型 | 版本文件 | 更新方式 | |
| 103 | |----------|----------|----------| |
| 104 | | Node.js | `package.json` | 修改 `version` 字段 | |
| 105 | | Java Maven | `pom.xml` | 修改 `<version>` 标签 | |
| 106 | | Python | `pyproject.toml` | 修改 `version` 字段 | |
| 107 | | Go | 可选或跳过 | — | |
| 108 | |
| 109 | --- |
| 110 | |
| 111 | ## Part 3: Git Tag 规范 |
| 112 | |
| 113 | ### 3.1 命名格式 |
| 114 | |
| 115 | | 类型 | 格式 | 示例 | |
| 116 | |------|------|------| |
| 117 | | 正式版本 | `v{VERSION}` | `v1.0.0` | |
| 118 | | 预发布版本 | `v{VERSION}-{PRERELEASE}.{N}` | `v1.0.0-beta.1` | |
| 119 | |
| 120 | ### 3.2 创建带注释 Tag |
| 121 | |
| 122 | ```bash |
| 123 | git tag -a v1.0.0 -m "Release v1.0.0 |
| 124 | |
| 125 | Features: |
| 126 | - 用户登录功能 |
| 127 | - 角色权限管理 |
| 128 | |
| 129 | Fixes: |
| 130 | - 修复 Token 过期问题" |
| 131 | ``` |
| 132 | |
| 133 | ### 3.3 常用命令 |
| 134 | |
| 135 | ```bash |
| 136 | git tag -l # 列出所有 Tag |
| 137 | git tag -l "v1.*" # 匹配 Tag |
| 138 | git show v1.0.0 # 查看 Tag 详情 |
| 139 | git tag -d v1.0.0 # 删除本地 Tag |
| 140 | git push origin --delete v1.0.0 # 删除远程 Tag |
| 141 | git push origin v1.0.0 # 推送单个 Tag |
| 142 | git push origin --tags # 推送所有 Tag |
| 143 | ``` |
| 144 | |
| 145 | --- |
| 146 | |
| 147 | ## Part 4: Changelog 规范 |
| 148 | |
| 149 | ### 4.1 格式模板 |
| 150 | |
| 151 | 基于 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/): |
| 152 | |
| 153 | ```markdown |
| 154 | # Changelog |
| 155 | |
| 156 | ## [Unreleased] |
| 157 | ### Added / Changed / Deprecated / Removed / Fixed / Security |
| 158 | |
| 159 | ## [1.0.0] - 2024-01-15 |
| 160 | ### Added |
| 161 | - 用户登录功能 |
| 162 | - 角色权限管理 |
| 163 | |
| 164 | ### Fixed |
| 165 | - 修复 Token 过期验证问题 (#123) |
| 166 | |
| 167 | ### Security |
| 168 | - 升级 JWT 库修复安全漏洞 |
| 169 | ``` |
| 170 | |
| 171 | ### 4.2 变更分类 |
| 172 | |
| 173 | | 分类 | 说明 | |
| 174 | |------|------| |
| 175 | | Added | 新增功能 | |
| 176 | | Changed | 功能变更 | |
| 177 | | Deprecated | 即将废弃 | |
| 178 | | Removed | 已移除 | |
| 179 | | Fixed | Bug 修复 | |
| 180 | | Security | 安全相关 | |
| 181 | |
| 182 | ### 4.3 自动生成 |
| 183 | |
| 184 | ```bash |
| 185 | git log v0.9.0..v1.0.0 --pretty=format:"%s" | grep "^feat" | sed 's/feat/### Added/' |
| 186 | git log v0.9.0..v1.0.0 --pretty=format:"%s" | grep "^fix" | sed 's/fix/### Fixed/' |
| 187 | ``` |
| 188 | |
| 189 | --- |
| 190 | |
| 191 | ## Part 5: Release Notes 规范 |
| 192 | |
| 193 | ```markdown |
| 194 | # Release v1.0.0 |
| 195 | |
| 196 | ## 🎉 新功能 |
| 197 | ### 用户管理 |
| 198 | - **用户登录** - 支持 JWT 和 Redis Token 两种认证模式 |
| 199 | - **角色权限** - 基于 RBAC 的细粒度权限控制 |
| 200 | |
| 201 | ## 🐛 Bug 修复 |
| 202 | - 修复 Token 过期后前端未正确跳转登录页的问题 (#123) |
| 203 | |
| 204 | ## 💥 重大变更 |
| 205 | - API 路径统一调整为 `/api/v1/` 前缀 |
| 206 | |
| 207 | ## 📦 依赖更新 |
| 208 | - 升级 Spring Boot 至 3.2.0 |
| 209 | |
| 210 | ## 完整变更日志 |
| 211 | 查看 [CHANGELOG.md](./CHANGELOG.md) 获取完整变更记录。 |
| 212 | ``` |
| 213 | |
| 214 | --- |
| 215 | |
| 216 | ## Part 6: 自动化工作流 |
| 217 | |
| 218 | ### 6.1 标准发布流程 |
| 219 | |
| 220 | ``` |
| 221 | 1. git status — 检查工作区状态 |
| 222 | 2. git checkout main && git pull — 确保在主分支 |
| 223 | 3. git add . && git commit -m "..." — 提交变更 |
| 224 | 4. git push origin main — 推送 |
| 225 | 5. 确定版本号 → 更新版本文件 — version bump |
| 226 | 6. git add . && git commit -m "chore: release vX.X.X" |
| 227 | 7. git tag -a vX.X.X -m "Release vX.X.X" |
| 228 | 8. git push origin vX.X.X — 推送 Tag |
| 229 | 9. git push origin main — 推送版本更新提交 |
| 230 | ``` |
| 231 | |
| 232 | > ⚠️ 注意顺序:先提交代码 → 创建 Tag → 更新版本文件 → 提交版本更新 → 推送 |
| 233 | |
| 234 | ### 6.2 版本发布检查清单 |
| 235 | |
| 236 | - [ ] 所有测试通过 |
| 237 | - [ ] 代码已 Review |
| 238 | - [ ] CHANGELOG.md 已更新 |
| 239 | - [ ] 版本号已更新 |
| 240 | - [ ] Tag 已创建并推送 |
| 241 | |
| 242 | --- |
| 243 | |
| 244 | ## Part 7: Windows PowerShell 兼容性 |
| 245 | |
| 246 | | Bash | PowerShell | 说明 | |
| 247 | |------|-----------|------| |
| 248 | | `cmd1 && cmd2` | `cmd1; cmd2` 或分开执行 | PowerShell 不支持 `&&` | |
| 249 | | `head -5` | `Select-Object -First 5` | 无 `head` | |
| 250 | | `grep` | `Select-String` 或 `fin |