# 修复上传问题指南 ## 问题分析 1. **未提交的更改**:`android-chat-master` 子模块有修改 2. **远程仓库已存在**:需要更新或删除后重新添加 3. **SSH 主机密钥验证失败**:重新安装 Gerrit 后 SSH 密钥改变了 ## 解决方案 ### 方法一:使用 HTTP(推荐,最简单) HTTP 方式不需要 SSH 密钥,更简单。 #### 步骤 1:处理未提交的更改 ```bash # 查看当前状态 git status # 选项 A:提交所有更改 git add . git commit -m "Update code before push to Gerrit" # 选项 B:如果不想提交子模块的更改,可以暂存 git stash ``` #### 步骤 2:更新远程仓库(使用 HTTP) ```bash # 删除旧的远程仓库 git remote remove gerrit # 重新添加(使用 HTTP,不需要 SSH) git remote add gerrit http://101.43.95.130:8080/zhini_im # 验证 git remote -v ``` #### 步骤 3:推送代码 ```bash # 切换到主分支(如果需要) git checkout -b master 2>/dev/null || git checkout master # 推送代码 git push gerrit HEAD:refs/heads/master ``` ### 方法二:修复 SSH 密钥问题(如果想用 SSH) #### 步骤 1:删除旧的 SSH 主机密钥 ```bash # 在 Git Bash 中执行 ssh-keygen -R [101.43.95.130]:29418 # 或者手动编辑 known_hosts 文件 # 删除 /c/Users/Administrator/.ssh/known_hosts 文件中第 4 行 ``` #### 步骤 2:重新添加 SSH 主机密钥 ```bash # 重新连接并接受新的主机密钥 ssh -p 29418 admin@101.43.95.130 # 输入 yes 接受新的主机密钥 ``` #### 步骤 3:更新远程仓库(使用 SSH) ```bash # 删除旧的 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 中执行: ```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:提交子模块更改 ```bash cd android-chat-master git add . git commit -m "Update submodule" cd .. git add android-chat-master git commit -m "Update submodule reference" ``` ### 选项 2:忽略子模块更改 ```bash # 暂存子模块更改 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 ```bash # 删除旧的远程仓库 git remote remove gerrit # 重新添加 git remote add gerrit http://101.43.95.130:8080/zhini_im ``` ### 错误:Host key verification failed **解决方案 1:使用 HTTP(推荐)** ```bash git remote set-url gerrit http://101.43.95.130:8080/zhini_im ``` **解决方案 2:修复 SSH 密钥** ```bash ssh-keygen -R [101.43.95.130]:29418 ssh -p 29418 admin@101.43.95.130 # 接受新密钥 ``` ### 错误:Changes not staged for commit ```bash # 提交所有更改 git add . git commit -m "Update code" # 或暂存更改 git stash ```