go get github默认版本问题

go获取最新的代码库

go get是go开发者非常常用的命令,在gomodule模式下,go代码在pkg/mod进行了统一管理。当我们使用IDE时,尽量使用go get下载go程序。因为IDE,如vscode的代码跳转和解析都依赖gopath和go mod的代码,不使用go get命令,便需要开发者自已进行代码结构的创建,git clone并不会把父路径进行创建,也不会将代码自动放到go的代码有效路径上。
作为开发者,这种程序管理的要求是应该遵守的。但是go get 比较奇怪的一点是,不会clone最新版本的代码。

% go get github.com/giongto35/cloud-game
go: github.com/giongto35/cloud-game upgrade => v1.0.0 

由于go get的设定,强制要求下载最稳定最基础的版本。但是实际上这于go mod有点冲突。因为go mod是支持多版本的,比如说v1,v2,就算go mod明确指明了v2,依然会下载最小的版本。
虽然说可以指定版本。如果没有指明 version 的情况下,则默认先下载打了 tag 的 release 版本;如果没有 release 版本,则下载最新的 pre release 版本。如果还没有则下载最新的commit,而master的最新commit可能才是我们所需要的。

go get <path-to-repo>@<branch>

直接指定tag是不会采纳的。

% go get github.com/giongto35/cloud-game@v2.0.0
go get github.com/giongto35/cloud-game@v2.0.0: github.com/giongto35/cloud-game@v2.0.0: invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2

在这里插入图片描述
go get对最小最稳定的版本已经魔怔了。直接使用v2而不用@成功,v2使用根据go.mod的包名得出。@master也是不行的。

go get -u github.com/giongto35/cloud-game/v2     
go: downloading github.com/giongto35/cloud-game/v2 v2.4.1
go: github.com/giongto35/cloud-game/v2 upgrade => v2.4.1

当然了,任何go get也不会有任何版本控制可言,git直接就会失效。只能说go的版本管理任重而道远啊。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值