4.0 KiB
4.0 KiB
修复上传问题指南
问题分析
- 未提交的更改:
android-chat-master子模块有修改 - 远程仓库已存在:需要更新或删除后重新添加
- 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
验证推送
推送成功后:
- 访问:
http://101.43.95.130:8080/#/admin/projects/zhini_im - 应该能看到项目代码
- 访问:
http://101.43.95.130:8080/#/q/project:zhini_im - 应该能看到提交历史
常见错误处理
错误: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