Files
gerrit/修复上传问题指南.md
2025-12-22 17:12:39 +08:00

4.0 KiB
Raw Permalink Blame History

修复上传问题指南

问题分析

  1. 未提交的更改android-chat-master 子模块有修改
  2. 远程仓库已存在:需要更新或删除后重新添加
  3. SSH 主机密钥验证失败:重新安装 Gerrit 后 SSH 密钥改变了

解决方案

方法一:使用 HTTP推荐最简单

HTTP 方式不需要 SSH 密钥,更简单。

步骤 1处理未提交的更改

# 查看当前状态
git status

# 选项 A提交所有更改
git add .
git commit -m "Update code before push to Gerrit"

# 选项 B如果不想提交子模块的更改可以暂存
git stash

步骤 2更新远程仓库使用 HTTP

# 删除旧的远程仓库
git remote remove gerrit

# 重新添加(使用 HTTP不需要 SSH
git remote add gerrit http://101.43.95.130:8080/zhini_im

# 验证
git remote -v

步骤 3推送代码

# 切换到主分支(如果需要)
git checkout -b master 2>/dev/null || git checkout master

# 推送代码
git push gerrit HEAD:refs/heads/master

方法二:修复 SSH 密钥问题(如果想用 SSH

步骤 1删除旧的 SSH 主机密钥

# 在 Git Bash 中执行
ssh-keygen -R [101.43.95.130]:29418

# 或者手动编辑 known_hosts 文件
# 删除 /c/Users/Administrator/.ssh/known_hosts 文件中第 4 行

步骤 2重新添加 SSH 主机密钥

# 重新连接并接受新的主机密钥
ssh -p 29418 admin@101.43.95.130

# 输入 yes 接受新的主机密钥

步骤 3更新远程仓库使用 SSH

# 删除旧的
git remote remove gerrit

# 添加 SSH 远程仓库
git remote add gerrit ssh://admin@101.43.95.130:29418/zhini_im

# 推送
git push gerrit HEAD:refs/heads/master

完整操作步骤(推荐使用 HTTP

在 Git Bash 中执行:

# 1. 进入项目目录
cd /d/zhini/zhini_im

# 2. 查看当前状态
git status

# 3. 处理未提交的更改
# 选项 A提交所有更改
git add .
git commit -m "Update code before push to Gerrit"

# 或者选项 B暂存更改如果不想现在提交
# git stash

# 4. 删除旧的远程仓库
git remote remove gerrit

# 5. 添加 HTTP 远程仓库(推荐,不需要 SSH
git remote add gerrit http://101.43.95.130:8080/zhini_im

# 6. 验证远程仓库
git remote -v

# 7. 切换到主分支(如果需要)
git checkout -b master 2>/dev/null || git checkout master

# 8. 推送代码
git push gerrit HEAD:refs/heads/master

如果推送时提示需要认证

在开发模式下HTTP 推送通常不需要密码,但如果提示:

  • 用户名admin(或您注册的用户名)
  • 密码:留空(开发模式不需要密码)

处理子模块问题

如果 android-chat-master 是子模块,可以:

选项 1提交子模块更改

cd android-chat-master
git add .
git commit -m "Update submodule"
cd ..
git add android-chat-master
git commit -m "Update submodule reference"

选项 2忽略子模块更改

# 暂存子模块更改
git stash

# 或者重置子模块
git submodule update --init --recursive

验证推送

推送成功后:

  1. 访问:http://101.43.95.130:8080/#/admin/projects/zhini_im
  2. 应该能看到项目代码
  3. 访问:http://101.43.95.130:8080/#/q/project:zhini_im
  4. 应该能看到提交历史

常见错误处理

错误remote gerrit already exists

# 删除旧的远程仓库
git remote remove gerrit

# 重新添加
git remote add gerrit http://101.43.95.130:8080/zhini_im

错误Host key verification failed

解决方案 1使用 HTTP推荐

git remote set-url gerrit http://101.43.95.130:8080/zhini_im

解决方案 2修复 SSH 密钥

ssh-keygen -R [101.43.95.130]:29418
ssh -p 29418 admin@101.43.95.130  # 接受新密钥

错误Changes not staged for commit

# 提交所有更改
git add .
git commit -m "Update code"

# 或暂存更改
git stash