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

5.6 KiB
Raw Blame History

从码云推送到 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

复制返回的 URLhttp://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 公钥是否已添加到 Gerrithttp://101.43.95.130:8080/#/settings/ssh-keys
  2. 测试 SSH 连接:
    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. 如果已安装但仍有问题,重新安装:
    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,完整操作如下:

# 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
  • 🌐 访问 Gerrithttp://101.43.95.130:8080
  • 📝 查看变更:http://101.43.95.130:8080/#/q/status:open