
当使用较旧版本的 Git(如低于 2.0)时,go get 可能因协议协商失败或 HTTPS 重定向处理异常而长时间挂起、无输出、不返回,尤其在拉取托管于 gopkg.in 等重定向域名的模块时。升级 Git 是根本解决方法。
当使用较旧版本的 git(如低于 2.0)时,`go get` 可能因协议协商失败或 https 重定向处理异常而长时间挂起、无输出、不返回,尤其在拉取托管于 `gopkg.in` 等重定向域名的模块时。升级 git 是根本解决方法。
go get 命令卡住、无响应(表现为终端光标静止、无错误也无成功提示),是 Go 早期版本(如 Go 1.4.2)配合老旧 Git 客户端时的典型现象。其根本原因并非 Go 或网络配置问题,而是 Git 客户端自身缺陷:旧版 Git(尤其是
以问题中的命令为例:
go get -x github.com/hooklift/gowsdl
-x 参数本应输出详细执行步骤(如 git clone 命令),但实际仅显示:
git clone https://gopkg.in/inconshreveable/log15.v2 /home/usr_a/gocode/src/gopkg.in/inconshreveable/log15.v2
随后便停滞——这正是 Git 在尝试解析 gopkg.in 重定向时卡死的明确信号。
✅ 验证与解决步骤:
-
检查当前 Git 版本
git --version
若输出为 git version 1.9.1 或更低(如 1.7.x),即确认为问题根源。
-
升级 Git 至 2.0+(推荐 2.15+)
- Ubuntu/Debian:
sudo apt update && sudo apt install -y software-properties-common 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 git2u
- 源码编译(通用):
wget https://github.com/git/git/archive/refs/tags/v2.39.5.tar.gz tar -xzf v2.39.5.tar.gz && cd git-2.39.5 make prefix=/usr/local all && sudo make prefix=/usr/local install
- Ubuntu/Debian:
-
验证修复效果
升级后重新运行:go get -x github.com/hooklift/gowsdl
此时应可见完整调试日志,并顺利完成下载与构建。
⚠️ 注意事项:
- Go 1.4.2 已于 2015 年停止维护,存在安全与兼容性风险。强烈建议升级至 Go 1.19+(支持 Go Modules)以获得现代依赖管理能力;
- 若暂时无法升级 Go,确保 GOPATH 和 GOROOT 配置正确(如题中 /home/usr_a/gocode 和 /usr/local/go 无误),但此非本问题主因;
- 避免使用代理或 .gitconfig 中自定义 insteadOf 规则干扰 gopkg.in 解析,除非明确知晓其作用。
总结:go get 无响应 ≠ Go 错误,而是 Git 客户端能力不足。升级 Git 是最直接、最可靠的解法。在现代化 Go 开发中,结合 go mod init + go get 使用模块模式,可进一步规避传统 GOPATH 下的诸多兼容陷阱。










