Files
dating/GIT_CONVENTION.md
2026-01-20 14:51:53 +08:00

483 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Git 使用规范
## 目录
- [分支命名规范](#分支命名规范)
- [提交信息规范](#提交信息规范)
- [工作流程](#工作流程)
- [代码审查](#代码审查)
- [最佳实践](#最佳实践)
---
## 分支命名规范
### 分支类型
#### 1. 主分支
- **master/main**: 生产环境分支,只接受合并,不允许直接提交
- **develop/dev**: 开发主分支,用于集成所有功能
#### 2. 功能分支 (Feature)
```
feature/功能名称
feature/功能名称-简短描述
```
**示例:**
- `feature/user-login`
- `feature/payment-integration`
- `feature/contacts-friends`
#### 3. 修复分支 (Bugfix)
```
bugfix/问题描述
fix/问题描述
```
**示例:**
- `bugfix/login-error`
- `fix/memory-leak`
#### 4. 热修复分支 (Hotfix)
```
hotfix/问题描述
```
**示例:**
- `hotfix/critical-security-patch`
- `hotfix/payment-bug`
#### 5. 发布分支 (Release)
```
release/版本号
```
**示例:**
- `release/v1.0.0`
- `release/v2.1.0`
### 命名规则
- 使用小写字母
- 多个单词用连字符 `-` 分隔
- 避免使用下划线 `_` 或空格
- 分支名要有意义,能清楚表达分支用途
- 避免使用特殊字符:`~`, `^`, `:`, `?`, `*`, `[`, `\`
---
## 提交信息规范
### 提交信息格式
```
<type>(<scope>): <subject>
<body>
<footer>
```
### Type 类型
| 类型 | 说明 | 示例 |
|------|------|------|
| `feat` | 新功能 | `feat: 添加用户登录功能` |
| `fix` | 修复bug | `fix: 修复登录验证失败问题` |
| `docs` | 文档更新 | `docs: 更新API文档` |
| `style` | 代码格式调整(不影响功能) | `style: 格式化代码` |
| `refactor` | 代码重构 | `refactor: 重构用户服务类` |
| `perf` | 性能优化 | `perf: 优化数据库查询性能` |
| `test` | 测试相关 | `test: 添加用户登录单元测试` |
| `chore` | 构建/工具/依赖更新 | `chore: 更新依赖包版本` |
| `ci` | CI/CD相关 | `ci: 配置GitHub Actions` |
| `build` | 构建系统相关 | `build: 更新Maven配置` |
### Scope 范围(可选)
- 指定修改的模块或文件
- 示例:`feat(user): 添加用户注册功能`
### Subject 主题
- 简短描述不超过50个字符
- 使用中文或英文,保持项目统一
- 首字母小写,结尾不加句号
- 使用祈使语气(如:添加、修复、更新)
### Body 正文(可选)
- 详细描述修改内容
- 说明为什么修改,如何修改
- 每行不超过72个字符
- 用空行与 subject 分隔
### Footer 页脚(可选)
- 关联Issue`Closes #123`
- 破坏性变更:`BREAKING CHANGE: 修改了API接口`
### 提交信息示例
#### 简单提交
```
feat: 添加联系人管理功能
```
#### 带scope的提交
```
feat(user): 添加用户头像上传功能
```
#### 详细提交
```
feat(contact): 添加联系人管理功能
- 实现联系人列表查询
- 添加联系人添加/删除接口
- 集成Redis缓存优化性能
Closes #45
```
#### 修复提交
```
fix: 修复登录验证失败问题
修复了当用户密码包含特殊字符时验证失败的问题
Fixes #67
```
---
## 工作流程
### 1. 创建功能分支
```bash
# 从develop分支创建新分支
git checkout develop
git pull origin develop
git checkout -b feature/your-feature-name
```
### 2. 开发过程
```bash
# 经常提交代码
git add .
git commit -m "feat: 实现XXX功能"
# 定期同步主分支
git checkout develop
git pull origin develop
git checkout feature/your-feature-name
git merge develop
```
### 3. 提交前检查
```bash
# 检查代码状态
git status
# 查看修改内容
git diff
# 查看提交历史
git log --oneline
```
### 4. 推送分支
```bash
# 首次推送
git push -u origin feature/your-feature-name
# 后续推送
git push
```
### 5. 合并到主分支
```bash
# 方式1: 通过Pull Request推荐
# 在Git平台创建PR代码审查后合并
# 方式2: 本地合并(不推荐,除非紧急情况)
git checkout develop
git pull origin develop
git merge feature/your-feature-name
git push origin develop
```
### 6. 清理分支
```bash
# 删除本地分支
git branch -d feature/your-feature-name
# 删除远程分支
git push origin --delete feature/your-feature-name
```
---
## 代码审查
### Pull Request 规范
#### PR标题格式
```
[类型] 简短描述
```
**示例:**
- `[Feature] 添加联系人管理功能`
- `[Fix] 修复登录验证问题`
- `[Refactor] 重构用户服务类`
#### PR描述模板
```markdown
## 变更说明
简要描述本次PR的主要变更内容
## 变更类型
- [ ] 新功能
- [ ] Bug修复
- [ ] 代码重构
- [ ] 文档更新
- [ ] 性能优化
- [ ] 其他
## 测试说明
描述如何测试这些变更
## 相关Issue
关联的Issue编号: #123
## 截图(如适用)
[添加相关截图]
```
### 审查检查清单
#### 提交者
- [ ] 代码符合项目规范
- [ ] 已添加必要的测试
- [ ] 已更新相关文档
- [ ] 提交信息清晰明确
- [ ] 无编译错误和警告
- [ ] 已进行自测
#### 审查者
- [ ] 代码逻辑正确
- [ ] 代码风格一致
- [ ] 无明显的性能问题
- [ ] 无安全隐患
- [ ] 测试覆盖充分
- [ ] 文档更新完整
---
## 最佳实践
### 1. 提交频率
-**推荐**: 频繁提交,每次提交完成一个小功能
-**不推荐**: 大量代码一次性提交
### 2. 提交粒度
-**推荐**: 每次提交只做一件事
-**不推荐**: 一个提交包含多个不相关的修改
### 3. 提交前检查
```bash
# 检查代码格式
# 运行测试
# 检查编译错误
```
### 4. 避免的操作
- ❌ 不要在master/main分支直接提交
- ❌ 不要提交临时文件、日志文件
- ❌ 不要提交敏感信息(密码、密钥等)
- ❌ 不要强制推送主分支 (`git push --force`)
### 5. 使用 .gitignore
确保 `.gitignore` 文件包含:
```
# 编译文件
*.class
*.jar
*.war
# IDE文件
.idea/
.vscode/
*.iml
# 日志文件
*.log
# 依赖目录
node_modules/
target/
# 配置文件(包含敏感信息)
application-local.yml
config.properties
```
### 6. 冲突处理
```bash
# 拉取最新代码
git pull origin develop
# 如果有冲突,解决冲突后
git add .
git commit -m "fix: 解决合并冲突"
```
### 7. 撤销操作
#### 撤销工作区修改
```bash
git checkout -- <file>
```
#### 撤销暂存区修改
```bash
git reset HEAD <file>
```
#### 修改最后一次提交
```bash
git commit --amend -m "新的提交信息"
```
#### 回退到指定提交
```bash
# 软回退(保留修改)
git reset --soft <commit-hash>
# 硬回退(丢弃修改)
git reset --hard <commit-hash>
```
---
## 常用命令速查
### 分支操作
```bash
# 查看所有分支
git branch -a
# 创建分支
git branch <branch-name>
# 切换分支
git checkout <branch-name>
# 创建并切换分支
git checkout -b <branch-name>
# 删除本地分支
git branch -d <branch-name>
# 删除远程分支
git push origin --delete <branch-name>
```
### 提交操作
```bash
# 查看状态
git status
# 添加文件
git add <file>
git add .
# 提交
git commit -m "提交信息"
# 查看提交历史
git log
git log --oneline
git log --graph --oneline --all
```
### 远程操作
```bash
# 查看远程仓库
git remote -v
# 拉取代码
git pull origin <branch-name>
# 推送代码
git push origin <branch-name>
# 获取远程更新(不合并)
git fetch origin
```
### 其他实用命令
```bash
# 查看差异
git diff
git diff <branch1> <branch2>
# 暂存修改
git stash
git stash pop
# 查看文件历史
git log -- <file>
# 查看某行的修改历史
git blame <file>
```
---
## 版本标签规范
### 标签命名
使用语义化版本号:`v主版本号.次版本号.修订号`
**示例:**
- `v1.0.0` - 初始发布
- `v1.1.0` - 新功能
- `v1.1.1` - Bug修复
- `v2.0.0` - 重大更新
### 标签操作
```bash
# 创建标签
git tag -a v1.0.0 -m "版本1.0.0发布"
# 推送标签
git push origin v1.0.0
# 推送所有标签
git push origin --tags
# 查看标签
git tag
git show v1.0.0
```
---
## 注意事项
1. **保护主分支**: master/main 分支应该设置保护规则,禁止直接推送
2. **定期同步**: 开发过程中定期从主分支同步代码,避免冲突积累
3. **及时清理**: 合并后的分支及时删除,保持仓库整洁
4. **提交前测试**: 确保代码可以正常编译和运行
5. **代码审查**: 重要功能必须经过代码审查才能合并
---
## 参考资源
- [Git官方文档](https://git-scm.com/doc)
- [Conventional Commits](https://www.conventionalcommits.org/)
- [Semantic Versioning](https://semver.org/)
---
**最后更新**: 2024年