5.6 KiB
5.6 KiB
从码云推送到 Gerrit 操作指南
📋 前提条件
- ✅ 已从码云(Gitee)拉取最新代码
- ✅ 代码仓库在本地已存在
- ✅ Gerrit 服务器地址:
101.43.95.130:8080 - ✅ SSH 端口:
29418 - ✅ 用户名:
renjianbo
🚀 操作步骤
步骤 1:进入代码仓库目录
# 根据您的实际路径,进入代码目录
cd /d/zhini/zhini_im
# 或者
cd /path/to/your/project
步骤 2:检查当前 Git 状态
# 查看当前分支和状态
git status
# 查看远程仓库配置
git remote -v
步骤 3:添加 Gerrit 远程仓库
如果还没有配置 Gerrit 远程仓库:
# 方式一:添加为新的远程仓库(推荐,保留码云远程)
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(不推荐,但可以作为备选):
git remote add gerrit http://renjianbo@101.43.95.130:8080/项目名称
步骤 4:安装 commit-msg Hook(重要!)
Gerrit 需要 Change-Id,必须安装 hook:
# 下载 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 status
# 如果有未提交的更改,需要先提交
git add .
git commit -m "从码云同步代码"
步骤 6:推送到 Gerrit
推送到评审队列(推荐):
# 推送到 master 分支的评审队列
git push gerrit HEAD:refs/for/master
# 如果替换了 origin,使用:
# git push origin HEAD:refs/for/master
推送到其他分支:
# 推送到 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.
解决方法:
- 确认项目名称是否正确
- 在 Gerrit Web 界面查看项目列表:
http://101.43.95.130:8080/#/admin/projects/ - 如果项目不存在,需要先在 Gerrit 中创建项目
问题 2:SSH 连接失败
错误信息:
ssh: connect to host 101.43.95.130 port 29418: Connection timed out
解决方法:
- 检查 SSH 公钥是否已添加到 Gerrit:
http://101.43.95.130:8080/#/settings/ssh-keys - 测试 SSH 连接:
ssh -p 29418 renjianbo@101.43.95.130 gerrit version - 如果 SSH 无法使用,可以临时使用 HTTP
问题 3:缺少 Change-Id
错误信息:
remote: ERROR: missing Change-Id in commit message
解决方法:
- 确保已安装 commit-msg hook(见步骤 4)
- 如果已安装但仍有问题,重新安装:
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg chmod +x .git/hooks/commit-msg - 对于已提交的 commit,使用
git commit --amend重新提交
问题 4:权限不足
错误信息:
remote: Permission denied
解决方法:
- 确认您在 Gerrit 中已注册账户
- 确认您有该项目的推送权限
- 联系管理员添加权限
📝 完整示例
假设您的项目名称是 zhini_im,完整操作如下:
# 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
🎯 快速参考
常用命令
# 查看远程仓库
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
查看项目列表
# 通过 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