
go get 命令无响应通常由 Git 版本过低导致,尤其在 Go 1.4.x 等旧版本中,其依赖的 Git 协议协商机制与现代代码托管平台(如 GitHub、gopkg.in)不兼容,造成克隆过程无限挂起。
`go get` 命令无响应通常由 git 版本过低导致,尤其在 go 1.4.x 等旧版本中,其依赖的 git 协议协商机制与现代代码托管平台(如 github、gopkg.in)不兼容,造成克隆过程无限挂起。
在 Go 1.4.2 这一较老版本中,go get 内部调用 git clone 时默认使用较陈旧的 Git 协议(如 git:// 或未启用 TLS 1.2+ 的 HTTPS),而自 2021 年起,GitHub 已完全弃用弱加密协议并强制要求 TLS 1.2+;同时,gopkg.in 等镜像服务也已升级安全策略。若系统 Git 版本低于 1.9(尤其是 1.7.x 或更早),将无法完成 HTTPS 协商或子模块递归拉取,表现为命令长时间静默、无错误输出、进程不退出——这正是你观察到 git clone https://gopkg.in/inconshreveable/log15.v2 ... 卡住的根本原因。
✅ 验证与修复步骤:
-
检查 Git 版本
git --version
若输出为 git version 1.7.1 或类似低于 1.9.0 的版本,即为问题源头。
-
升级 Git(推荐方式)
- Ubuntu/Debian:
sudo apt update && sudo apt install -y git # 或添加 PPA 获取更新版本(如 Git 2.30+) sudo add-apt-repository ppa:git-core/ppa -y && sudo apt update && sudo apt install -y git
- CentOS/RHEL:
sudo yum install -y epel-release && sudo yum install -y git # 或使用 IUS 源安装新版
- Ubuntu/Debian:
-
临时绕过(仅调试用,不推荐长期使用)
若暂无法升级 Git,可手动下载依赖并模拟 go get 结构:mkdir -p "$GOPATH/src/gopkg.in/inconshreveable/log15.v2" cd "$GOPATH/src/gopkg.in/inconshreveable/log15.v2" git clone https://github.com/inconshreveable/log15 . # 注意末尾的点 # 然后手动构建或运行 go install
⚠️ 重要注意事项:
- Go 1.4.2 已于 2015 年结束官方支持,存在已知安全漏洞与兼容性缺陷,强烈建议升级至 Go 1.19+(当前稳定 LTS 版本),新版本内置更健壮的模块代理(GOPROXY=https://proxy.golang.org)与 Git 调度逻辑,彻底规避此类问题;
- go get 在 Go 1.16+ 后默认启用模块模式,旧式 $GOPATH 全局依赖管理已被逐步淘汰,应转向 go mod init + go.mod 方式管理依赖;
- 执行 go get 前确保网络可访问 github.com 和 gopkg.in(部分企业环境需配置 git config --global url."https://".insteadOf git://)。
总结:该问题本质是工具链版本老化引发的协议失配,而非 Go 配置错误。升级 Git 是最直接有效的解法;但从工程可持续性出发,同步升级 Go 本身并迁移到 Go Modules,才是面向现代 Go 生态的正确实践路径。










