This commit is contained in:
renjianbo
2026-01-12 13:30:25 +08:00
parent ffa22aa1ae
commit 53eb2abda5
54 changed files with 138 additions and 138 deletions

View File

@@ -1,128 +1,128 @@
推荐标准分支模型: master/main主干分支 永远保持可编译、可运行 release-* 发布分支 只合并经过验证的Change hotfix-* 紧急修复
您总结的Gerrit分支创建流程非常准确和实用以下是对您提供内容的梳理和补充使其更加清晰系统化。
## Gerrit 分支管理全流程
### 一、权限说明(重要前提)
- **Owner/Maintainer**:有权限创建新分支
- **Developer**:默认只能推送提交到现有分支,不能创建新分支
- **权限配置路径**Project → Access → Reference: refs/heads/*
### 二、分支创建详细步骤
#### 1. master/main分支主干分支
```bash
# 如果仓库为空需要初始化master分支
git clone ssh://user@gerrit-ip:29418/project-name
cd project-name
git checkout -b master
# 首次推送master分支不走Review流程
git push origin master
```
#### 2. release-*分支(发布分支)
```bash
# 1. 更新master分支
git checkout master
git pull
# 2. 创建本地release分支
git checkout -b release-1.0
# 3. 推送到Gerrit创建远程分支
git push origin release-1.0
# 注意这里直接push不是refs/for/
```
#### 3. hotfix-*分支(紧急修复分支)
```bash
# 从release分支创建
git checkout release-1.0
git pull
git checkout -b hotfix-crash-123
git push origin hotfix-crash-123
# 从master分支创建如果未建立release分支
git checkout master
git pull
git checkout -b hotfix-issue-456
git push origin hotfix-issue-456
```
### 三、不同分支的提交方式差异
| 分支类型 | 推送命令 | 是否走Review | 说明 |
|---------|---------|-------------|------|
| 创建新分支 | `git push origin 分支名` | ❌ 否 | 直接创建分支 |
| master分支提交 | `git push origin HEAD:refs/for/master` | ✅ 是 | 常规开发流程 |
| release分支提交 | `git push origin HEAD:refs/for/release-1.0` | ✅ 是 | 修复bug流程 |
| hotfix分支提交 | `git push origin HEAD:refs/for/hotfix-*` | ✅ 是 | 紧急修复流程 |
### 四、分支合并策略
#### hotfix修复后的合并流程
```bash
# 1. 修复完成后合并到release分支
git checkout release-1.0
git merge --no-ff hotfix-crash-123
git push origin HEAD:refs/for/release-1.0
# 2. cherry-pick到master
git checkout master
git cherry-pick <hotfix-commit-id>
git push origin HEAD:refs/for/master
```
### 五、最佳实践建议
1. **分支命名规范**
- feature/xxx功能分支从master创建
- release/x.y.z发布分支
- hotfix/xxx紧急修复
- bugfix/xxx普通bug修复
2. **权限管理**
```bash
# 为开发者授予特定分支创建权限Gerrit Web界面
# Access → Reference: refs/heads/feature/*
# 添加 Push + Create Reference 权限给特定用户组
```
3. **CI/CD集成**
- release-* 分支:触发正式环境构建
- hotfix-* 分支:紧急修复通道,快速验证
- master分支每日/持续集成
4. **分支保护**
- 保护master分支必须通过Code Review
- 保护release分支限制直接push需通过Review
- 定期清理过期分支
### 六、常见问题排查
1. **权限拒绝错误**
```
! [remote rejected] release-1.0 -> release-1.0 (prohibited by Gerrit)
```
解决方法联系Owner/Maintainer授予分支创建权限
2. **分支已存在错误**
```bash
# 先拉取远程分支列表
git fetch origin
git branch -r # 查看远程分支
```
3. **使用Gerrit插件创建分支**(可选):
```bash
# 安装git-review插件
pip install git-review
# 创建分支并推送到Gerrit
git review -c -b release-1.0
```
您的总结已经非常全面,这些补充主要是为了让操作流程更加清晰,便于团队协作和标准化操作。
推荐标准分支模型: master/main主干分支 永远保持可编译、可运行 release-* 发布分支 只合并经过验证的Change hotfix-* 紧急修复
您总结的Gerrit分支创建流程非常准确和实用以下是对您提供内容的梳理和补充使其更加清晰系统化。
## Gerrit 分支管理全流程
### 一、权限说明(重要前提)
- **Owner/Maintainer**:有权限创建新分支
- **Developer**:默认只能推送提交到现有分支,不能创建新分支
- **权限配置路径**Project → Access → Reference: refs/heads/*
### 二、分支创建详细步骤
#### 1. master/main分支主干分支
```bash
# 如果仓库为空需要初始化master分支
git clone ssh://user@gerrit-ip:29418/project-name
cd project-name
git checkout -b master
# 首次推送master分支不走Review流程
git push origin master
```
#### 2. release-*分支(发布分支)
```bash
# 1. 更新master分支
git checkout master
git pull
# 2. 创建本地release分支
git checkout -b release-1.0
# 3. 推送到Gerrit创建远程分支
git push origin release-1.0
# 注意这里直接push不是refs/for/
```
#### 3. hotfix-*分支(紧急修复分支)
```bash
# 从release分支创建
git checkout release-1.0
git pull
git checkout -b hotfix-crash-123
git push origin hotfix-crash-123
# 从master分支创建如果未建立release分支
git checkout master
git pull
git checkout -b hotfix-issue-456
git push origin hotfix-issue-456
```
### 三、不同分支的提交方式差异
| 分支类型 | 推送命令 | 是否走Review | 说明 |
|---------|---------|-------------|------|
| 创建新分支 | `git push origin 分支名` | ❌ 否 | 直接创建分支 |
| master分支提交 | `git push origin HEAD:refs/for/master` | ✅ 是 | 常规开发流程 |
| release分支提交 | `git push origin HEAD:refs/for/release-1.0` | ✅ 是 | 修复bug流程 |
| hotfix分支提交 | `git push origin HEAD:refs/for/hotfix-*` | ✅ 是 | 紧急修复流程 |
### 四、分支合并策略
#### hotfix修复后的合并流程
```bash
# 1. 修复完成后合并到release分支
git checkout release-1.0
git merge --no-ff hotfix-crash-123
git push origin HEAD:refs/for/release-1.0
# 2. cherry-pick到master
git checkout master
git cherry-pick <hotfix-commit-id>
git push origin HEAD:refs/for/master
```
### 五、最佳实践建议
1. **分支命名规范**
- feature/xxx功能分支从master创建
- release/x.y.z发布分支
- hotfix/xxx紧急修复
- bugfix/xxx普通bug修复
2. **权限管理**
```bash
# 为开发者授予特定分支创建权限Gerrit Web界面
# Access → Reference: refs/heads/feature/*
# 添加 Push + Create Reference 权限给特定用户组
```
3. **CI/CD集成**
- release-* 分支:触发正式环境构建
- hotfix-* 分支:紧急修复通道,快速验证
- master分支每日/持续集成
4. **分支保护**
- 保护master分支必须通过Code Review
- 保护release分支限制直接push需通过Review
- 定期清理过期分支
### 六、常见问题排查
1. **权限拒绝错误**
```
! [remote rejected] release-1.0 -> release-1.0 (prohibited by Gerrit)
```
解决方法联系Owner/Maintainer授予分支创建权限
2. **分支已存在错误**
```bash
# 先拉取远程分支列表
git fetch origin
git branch -r # 查看远程分支
```
3. **使用Gerrit插件创建分支**(可选):
```bash
# 安装git-review插件
pip install git-review
# 创建分支并推送到Gerrit
git review -c -b release-1.0
```
您的总结已经非常全面,这些补充主要是为了让操作流程更加清晰,便于团队协作和标准化操作。