Github ECDSA主机密钥不匹配及Git操作故障求助
解决Github SSH主机密钥不匹配及Git推送/拉取失败问题
问题详情
执行git push时出现SSH主机密钥不匹配警告,导致连接异常:
Warning: the ECDSA host key for 'github.com' differs from the key for the IP address '140.82.112.4' Offending key for IP in /Users/joyliu/.ssh/known_hosts:13 Matching host key in /Users/joyliu/.ssh/known_hosts:16
尝试删除known_hosts指定行、ssh-keygen -R github.com及重新写入主机密钥后,警告仍存在,同时出现Git拉取/推送失败:
fatal: refusing to merge unrelated histories ! [rejected] master -> master (non-fast-forward)
分步解决方案
1. 清理冲突的SSH主机密钥(针对IP地址条目)
警告指向的是**IP地址140.82.112.4**的旧密钥冲突,之前的操作仅清理了github.com域名的条目,需补充清理IP相关条目:
- 删除IP对应的旧密钥:
ssh-keygen -R 140.82.112.4 - 再次清理
github.com域名的旧密钥:ssh-keygen -R github.com - 重新获取并写入Github的最新主机密钥:
ssh-keyscan github.com >> ~/.ssh/known_hosts - 验证SSH连接是否正常:
若返回ssh -T git@github.comHi [你的用户名]! You've successfully authenticated, but GitHub does not provide shell access.则说明SSH问题已解决。
2. 解决Git分支历史冲突与推送失败
情况1:需要合并本地与远程的无关历史
如果本地分支和远程分支提交历史不相关,允许合并:
git pull origin master --allow-unrelated-histories
执行后手动解决文件冲突,提交合并结果:
git add . git commit -m "Merge remote master branch"
最后推送:
git push origin master
情况2:放弃本地更改,直接同步远程分支
若本地内容无需保留,可强制覆盖本地分支为远程版本(注意:此操作会丢失本地未提交/未推送的更改):
git reset --hard origin/master git push origin master
内容的提问来源于stack exchange,提问作者Joy
相关产品推荐
相关产品推荐

