解决 Git 推送/拉取报错:Could not resolve host: gitee.com

解决 Git 推送/拉取报错:Could not resolve host: gitee.com

问题现象

在使用 Gitee(码云)进行代码管理时,执行 git pushgit pull 命令后,终端抛出如下错误:

bash 复制代码
fatal: unable to access 'https://gitee.com/gwhsss/self-taught-examination.git/': Could not resolve host: gitee.com

命令行尝试连接远程仓库失败,提示"无法解析主机名 gitee.com",导致代码无法推送或拉取。

故障复现场景

bash 复制代码
# 正常完成开发,提交代码
$ git add .
$ git commit -m "获取+推送"
[master 52362f8] 获取+推送
 1 file changed, 482 insertions(+)

# 推送时出现报错
$ git push -u origin master
fatal: unable to access 'https://gitee.com/...': Could not resolve host: gitee.com

# 即使撤销提交后尝试拉取,同样失败
$ git reset --soft HEAD~1
$ git pull
fatal: unable to access 'https://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 记录。

bash 复制代码
# Windows CMD 或 Git Bash 中执行
ipconfig /flushdns

# macOS / Linux 中执行
sudo dscacheutil -flushcache   # macOS
sudo systemd-resolve --flush-caches  # Linux (systemd)

执行成功后会看到"已成功刷新 DNS 解析缓存"的提示,然后重试 Git 操作:

bash 复制代码
git push -u origin master

方案二:修改系统 Hosts 文件(快速临时方案)

手动指定域名与 IP 的对应关系,绕过 DNS 查询直接通信。

步骤

  1. 以管理员身份打开记事本,打开文件 C:\Windows\System32\drivers\etc\hosts(macOS/Linux 为 /etc/hosts

  2. 在文件末尾添加:

    复制代码
    180.97.125.228 gitee.com
  3. 保存后测试连通性:

    bash 复制代码
    ping gitee.com

如果能 ping 通,即可正常进行 Git 操作:

bash 复制代码
git pull
git push -u origin master

注意:这是临时方案,如果 Gitee 后续更换 IP,需要手动更新 Hosts 文件。

方案三:更换公共 DNS 服务器(推荐方案)

从根源上解决 DNS 解析不稳定问题,更换更可靠的公共 DNS 服务。

Windows 操作步骤

  1. 进入 控制面板 → 网络和 Internet → 网络和共享中心

  2. 点击当前正在使用的网络连接(如"以太网"或 WLAN 名)

  3. 点击 属性 ,找到并双击 Internet 协议版本 4 (TCP/IPv4)

  4. 选择 使用下面的 DNS 服务器地址,填入:

    DNS 服务商 首选 DNS 备用 DNS
    阿里 DNS 223.5.5.5 223.6.6.6
    百度 DNS 180.76.76.76 -
    114 DNS 114.114.114.114 114.114.115.115
    Google DNS 8.8.8.8 8.8.4.4
  5. 点击确定保存,刷新 DNS 缓存:

    bash 复制代码
    ipconfig /flushdns
  6. 重新尝试 Git 操作:

    bash 复制代码
    git push -u origin master

方案四:将远程仓库地址从 HTTPS 切换为 SSH(最佳实践)

SSH 协议通过 IP 直接连接,完全避开 DNS 解析,是长期最优方案。

完整操作流程

bash 复制代码
# 1. 生成 SSH 密钥(如果已有可跳过)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 连续回车使用默认路径和无密码

# 2. 查看并复制公钥
cat ~/.ssh/id_ed25519.pub
# 复制终端输出的完整公钥内容

# 3. 登录 Gitee,进入 设置 → SSH公钥 → 添加公钥
# 将复制的公钥粘贴保存

# 4. 测试 SSH 连接
ssh -T git@gitee.com
# 首次连接会询问是否信任主机,输入 yes
# 成功会看到:Hi [用户名]! You've successfully authenticated...

# 5. 修改仓库远程地址为 SSH 格式
git remote set-url origin git@gitee.com:gwhsss/self-taught-examination.git

# 6. 验证远程地址
git remote -v
# 应显示:origin  git@gitee.com:gwhsss/self-taught-examination.git (fetch)
#          origin  git@gitee.com:gwhsss/self-taught-examination.git (push)

# 7. 正常推送或拉取
git push -u origin 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.proxy

  • Connection timed out

    目标服务器无响应,检查网络或代理配置

  • The requested URL returned error: 403

    权限认证失败,检查账号密码或 SSH 密钥

  • gnutls_handshake() failed

    SSL/TLS 握手失败,常见于代理环境

结语

Could not resolve host 这类 DNS 错误看似简单,却可能中断开发流程。对于日常频繁使用 Git 的开发者,建议首选 方案四(SSH 协议) 作为长期配置,搭配 方案三(公共 DNS) 优化网络环境,这样既能享受 SSH 的稳定快速,也能在网络切换时有备无患。如果只是临时应急,方案一和方案二也能快速解决问题,让你的代码继续顺畅流转。

相关推荐
小李云雾2 小时前
Git命令行总结与结合Pycharm的综合应用
git·pycharm
GISer_Jing3 小时前
现代全栈工程化实战:Git+Docker+Vercel+CI/CD
git·ci/cd·docker
tianyuanwo3 小时前
AI Harness Engineering 应用最佳实践:从单点故障到系统护栏
人工智能·git·harnnees
rising start4 小时前
Git入门
git·gitee
修己xj12 小时前
Gogs: 打造属于你自己的轻量级 Git 服务
git
Mediary13 小时前
Git本地忽略文件夹,只拉取目标文件夹
git
MY_TEUCK18 小时前
【git工具篇】Git 常用实战手册:从基础命令到分支冲突解决(开发实战版)
大数据·git
幸运的大号暖贴19 小时前
解决Vibe Coding时Idea经常不自动git add问题
java·人工智能·git·intellij-idea·claudecode·opencode