问题描述:
公司gitlab更换了git地址,本地统以替换引用git路径后提交代码,准备更新到服务器上。
本地windows环境开发没有任何问题,再部署测试环境时go mod更新包依赖环境报错:
go: xxxxx.cn/infra-components/sdk/microservice-framework/go-framework-plugins.git@v0.1.5: git fetch -f https://xxxxxx.cn/infra-components/sdk/microservice-framework/go-framework-plugins refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/58988a8c52a11bcf34f438ff330fcee1edf52ba472cd02662ad24668e2d34569: exit status 128:
error: RPC failed; result=22, HTTP code = 404
fatal: The remote end hung up unexpectedly
步骤1:
google搜索错误原因,得到答案,git地址有问题,缺少.git后缀。
执行命令:
git fetch https://xxxxxx.cn/infra-components/sdk/microservice-framework/go-framework-plugins.git
可以正常获取
执行命令:
git fetch -f https://xxxxxx.cn/infra-components/sdk/microservice-framework/go-framework-plugins
得到上述错误,验证问题缺失.git后缀
问题:
为何在window上go mod没有问题了?
在window上执行命令
git fetch -f https://xxxxxx.cn/infra-components/sdk/microservice-framework/go-framework-plugins
正常
在其他linux机器上执行该命令同样正常
步骤2:
为何缺失.git后缀,会出现404的问题。
搜索答案:git会在pull仓库地址时,会首先尝试连接不带.git后缀的仓库地址,然后在尝试连接带.git后缀的地址。两个地址都不行的情况下才会判断出错。
思考:是否是git版本的问题。
验证:git版本-window机器:v2.21.0 ;正常go mod的linux机器:v2.8.4;错误go mod的linux机器:v1.8.3.1
尝试:升级git版本,git升级到v2.9.5。问题解决。