解决 Git 推送/拉取报错:Could not resolve host: gitee.com
解决 Git 推送/拉取报错Could not resolve host: gitee.com问题现象在使用 Gitee码云进行代码管理时执行git push或git pull命令后终端抛出如下错误fatal: unable to accesshttps://gitee.com/gwhsss/self-taught-examination.git/:Could not resolve host: gitee.com命令行尝试连接远程仓库失败提示无法解析主机名 gitee.com导致代码无法推送或拉取。故障复现场景# 正常完成开发提交代码$gitadd.$gitcommit-m获取推送[master 52362f8]获取推送1filechanged,482insertions()# 推送时出现报错$gitpush-uorigin master fatal: unable to accesshttps://gitee.com/...:Could not resolve host: gitee.com# 即使撤销提交后尝试拉取同样失败$gitreset--softHEAD~1 $gitpull fatal: unable to accesshttps://gitee.com/...:Could not resolve host: gitee.com原因分析Could not resolve host错误的核心是DNS 解析失败。当 Git 尝试通过 HTTPS 协议连接gitee.com时操作系统需要先将这个域名翻译成 IP 地址如180.97.125.228这个翻译过程就叫 DNS 解析。如果 DNS 服务器无法完成翻译操作系统就不知道要把网络请求发往哪里Git 自然也就无法连接到远程仓库。常见的 DNS 解析失败原因本地 DNS 缓存污染系统缓存的域名解析记录过期或错误ISP网络运营商DNS 服务器故障默认 DNS 服务器临时性故障或响应超时公司/校园网络限制部分企业防火墙屏蔽了外部 DNS 或 Git 相关域名Gitee DNS 记录变更平台方调整了服务器 IP但本地 DNS 还未更新解决方案方案一刷新本地 DNS 缓存最简尝试这是成本最低的初步尝试可以清除本地缓存的错误 DNS 记录。# Windows CMD 或 Git Bash 中执行ipconfig /flushdns# macOS / Linux 中执行sudodscacheutil-flushcache# macOSsudosystemd-resolve --flush-caches# Linux (systemd)执行成功后会看到已成功刷新 DNS 解析缓存的提示然后重试 Git 操作gitpush-uorigin master方案二修改系统 Hosts 文件快速临时方案手动指定域名与 IP 的对应关系绕过 DNS 查询直接通信。步骤以管理员身份打开记事本打开文件C:\Windows\System32\drivers\etc\hostsmacOS/Linux 为/etc/hosts在文件末尾添加180.97.125.228 gitee.com保存后测试连通性pinggitee.com如果能 ping 通即可正常进行 Git 操作gitpullgitpush-uorigin master注意这是临时方案如果 Gitee 后续更换 IP需要手动更新 Hosts 文件。方案三更换公共 DNS 服务器推荐方案从根源上解决 DNS 解析不稳定问题更换更可靠的公共 DNS 服务。Windows 操作步骤进入控制面板 → 网络和 Internet → 网络和共享中心点击当前正在使用的网络连接如以太网或 WLAN 名点击属性找到并双击Internet 协议版本 4 (TCP/IPv4)选择使用下面的 DNS 服务器地址填入DNS 服务商首选 DNS备用 DNS阿里 DNS223.5.5.5223.6.6.6百度 DNS180.76.76.76-114 DNS114.114.114.114114.114.115.115Google DNS8.8.8.88.8.4.4点击确定保存刷新 DNS 缓存ipconfig /flushdns重新尝试 Git 操作gitpush-uorigin master方案四将远程仓库地址从 HTTPS 切换为 SSH最佳实践SSH 协议通过 IP 直接连接完全避开 DNS 解析是长期最优方案。完整操作流程# 1. 生成 SSH 密钥如果已有可跳过ssh-keygen-ted25519-Cyour_emailexample.com# 连续回车使用默认路径和无密码# 2. 查看并复制公钥cat~/.ssh/id_ed25519.pub# 复制终端输出的完整公钥内容# 3. 登录 Gitee进入 设置 → SSH公钥 → 添加公钥# 将复制的公钥粘贴保存# 4. 测试 SSH 连接ssh-Tgitgitee.com# 首次连接会询问是否信任主机输入 yes# 成功会看到Hi [用户名]! Youve successfully authenticated...# 5. 修改仓库远程地址为 SSH 格式gitremote set-url origin gitgitee.com:gwhsss/self-taught-examination.git# 6. 验证远程地址gitremote-v# 应显示origin gitgitee.com:gwhsss/self-taught-examination.git (fetch)# origin gitgitee.com:gwhsss/self-taught-examination.git (push)# 7. 正常推送或拉取gitpush-uorigin master方案对比方案优点缺点适用场景刷新 DNS 缓存操作简单耗时短不解决根源问题偶发性 DNS 缓存问题修改 Hosts立即生效绕过 DNS需手动维护 IP临时应急网络受限更换 DNS 服务器从根本上改善网络质量需系统设置修改DNS 服务器本身故障切换 SSH 协议一劳永逸完全避开 DNS首次配置稍复杂长期开发频繁推送扩展常见 Git 网络错误总结除了Could not resolve host开发中还可能遇到这些与网络相关的 Git 错误Failed to connect to gitee.com port 443: Connection refused代理设置问题检查git config --global http.proxyConnection timed out目标服务器无响应检查网络或代理配置The requested URL returned error: 403权限认证失败检查账号密码或 SSH 密钥gnutls_handshake() failedSSL/TLS 握手失败常见于代理环境结语Could not resolve host这类 DNS 错误看似简单却可能中断开发流程。对于日常频繁使用 Git 的开发者建议首选方案四SSH 协议作为长期配置搭配方案三公共 DNS优化网络环境这样既能享受 SSH 的稳定快速也能在网络切换时有备无患。如果只是临时应急方案一和方案二也能快速解决问题让你的代码继续顺畅流转。