Files
gerrit/从码云推送到Gerrit指南.md
2025-12-22 17:12:39 +08:00

258 lines
5.6 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.
# 从码云推送到 Gerrit 操作指南
## 📋 前提条件
- ✅ 已从码云Gitee拉取最新代码
- ✅ 代码仓库在本地已存在
- ✅ Gerrit 服务器地址:`101.43.95.130:8080`
- ✅ SSH 端口:`29418`
- ✅ 用户名:`renjianbo`
---
## 🚀 操作步骤
### 步骤 1进入代码仓库目录
```bash
# 根据您的实际路径,进入代码目录
cd /d/zhini/zhini_im
# 或者
cd /path/to/your/project
```
### 步骤 2检查当前 Git 状态
```bash
# 查看当前分支和状态
git status
# 查看远程仓库配置
git remote -v
```
### 步骤 3添加 Gerrit 远程仓库
**如果还没有配置 Gerrit 远程仓库**
```bash
# 方式一:添加为新的远程仓库(推荐,保留码云远程)
git remote add gerrit ssh://renjianbo@101.43.95.130:29418/项目名称
# 方式二:替换 origin 为 Gerrit会替换掉码云的远程
# git remote set-url origin ssh://renjianbo@101.43.95.130:29418/项目名称
```
**注意**:请将 `项目名称` 替换为 Gerrit 中的实际项目名称。
**如果使用 HTTP不推荐但可以作为备选**
```bash
git remote add gerrit http://renjianbo@101.43.95.130:8080/项目名称
```
### 步骤 4安装 commit-msg Hook重要
Gerrit 需要 Change-Id必须安装 hook
```bash
# 下载 commit-msg hook
mkdir -p .git/hooks
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
```
### 步骤 5检查是否有未提交的更改
```bash
# 查看工作区状态
git status
# 如果有未提交的更改,需要先提交
git add .
git commit -m "从码云同步代码"
```
### 步骤 6推送到 Gerrit
**推送到评审队列(推荐)**
```bash
# 推送到 master 分支的评审队列
git push gerrit HEAD:refs/for/master
# 如果替换了 origin使用
# git push origin HEAD:refs/for/master
```
**推送到其他分支**
```bash
# 推送到 develop 分支的评审队列
git push gerrit HEAD:refs/for/develop
# 推送到 feature 分支的评审队列
git push gerrit HEAD:refs/for/feature/xxx
```
### 步骤 7查看推送结果
推送成功后,会显示类似以下信息:
```
remote: Resolving deltas: 100% (X/X)
remote: Processing changes: refs: 1, new: 1
remote:
remote: SUCCESS
remote:
remote: http://101.43.95.130:8080/c/项目名称/+/1 [NEW]
remote:
To ssh://renjianbo@101.43.95.130:29418/项目名称
* [new branch] HEAD -> refs/for/master
```
复制返回的 URL`http://101.43.95.130:8080/c/项目名称/+/1`)在浏览器中打开查看变更。
---
## 🔧 常见问题处理
### 问题 1找不到项目
**错误信息**
```
fatal: Could not read from remote repository.
```
**解决方法**
1. 确认项目名称是否正确
2. 在 Gerrit Web 界面查看项目列表:`http://101.43.95.130:8080/#/admin/projects/`
3. 如果项目不存在,需要先在 Gerrit 中创建项目
### 问题 2SSH 连接失败
**错误信息**
```
ssh: connect to host 101.43.95.130 port 29418: Connection timed out
```
**解决方法**
1. 检查 SSH 公钥是否已添加到 Gerrit`http://101.43.95.130:8080/#/settings/ssh-keys`
2. 测试 SSH 连接:
```bash
ssh -p 29418 renjianbo@101.43.95.130 gerrit version
```
3. 如果 SSH 无法使用,可以临时使用 HTTP
### 问题 3缺少 Change-Id
**错误信息**
```
remote: ERROR: missing Change-Id in commit message
```
**解决方法**
1. 确保已安装 commit-msg hook见步骤 4
2. 如果已安装但仍有问题,重新安装:
```bash
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
```
3. 对于已提交的 commit使用 `git commit --amend` 重新提交
### 问题 4权限不足
**错误信息**
```
remote: Permission denied
```
**解决方法**
1. 确认您在 Gerrit 中已注册账户
2. 确认您有该项目的推送权限
3. 联系管理员添加权限
---
## 📝 完整示例
假设您的项目名称是 `zhini_im`,完整操作如下:
```bash
# 1. 进入项目目录
cd /d/zhini/zhini_im
# 2. 检查状态
git status
git remote -v
# 3. 添加 Gerrit 远程仓库
git remote add gerrit ssh://renjianbo@101.43.95.130:29418/zhini_im
# 4. 安装 commit-msg hook
mkdir -p .git/hooks
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
# 5. 如果有未提交的更改,先提交
git add .
git commit -m "从码云同步代码到 Gerrit"
# 6. 推送到 Gerrit
git push gerrit HEAD:refs/for/master
```
---
## 🎯 快速参考
### 常用命令
```bash
# 查看远程仓库
git remote -v
# 添加 Gerrit 远程仓库
git remote add gerrit ssh://renjianbo@101.43.95.130:29418/项目名称
# 推送到评审队列
git push gerrit HEAD:refs/for/master
# 查看变更列表
# 浏览器访问http://101.43.95.130:8080/#/q/status:open
```
### 查看项目列表
```bash
# 通过 SSH
ssh -p 29418 renjianbo@101.43.95.130 gerrit ls-projects
# 通过 Web 界面
# 访问http://101.43.95.130:8080/#/admin/projects/
```
---
## ✅ 检查清单
在推送前,请确认:
- [ ] 已进入正确的代码仓库目录
- [ ] 已添加 Gerrit 远程仓库
- [ ] 已安装 commit-msg hook
- [ ] 已提交所有更改(或确认没有未提交的更改)
- [ ] 知道目标分支名称master/develop 等)
- [ ] SSH 公钥已添加到 Gerrit如果使用 SSH
- [ ] 项目已在 Gerrit 中创建
---
## 📞 需要帮助?
- 📖 查看其他文档:`Gerrit快速使用指南.md`
- 🌐 访问 Gerrit`http://101.43.95.130:8080`
- 📝 查看变更:`http://101.43.95.130:8080/#/q/status:open`