在使用Golang模块命令(例如go get
)时,@latest
个特殊查询和@upgrade
个特殊查询有什么不同?
我认为latest
只会将所选模块设置为最新的已知版本,upgrade
只会"升级"到下一个已知版本(如果没有已知版本,那么它将下载最后一个).然而,在这两种情况下,它都只会进入最新版本,那么有什么区别呢?
在使用Golang模块命令(例如go get
)时,@latest
个特殊查询和@upgrade
个特殊查询有什么不同?
我认为latest
只会将所选模块设置为最新的已知版本,upgrade
只会"升级"到下一个已知版本(如果没有已知版本,那么它将下载最后一个).然而,在这两种情况下,它都只会进入最新版本,那么有什么区别呢?
引用和解释文档(https://go.dev/ref/mod#version-queries)
"最新", Select 可用的最高发布版本.如果没有发布版本,最新版本将 Select 最高的预发布版本.如果没有标记的版本,Latest会在资源库的缺省分支的顶端为提交 Select 一个伪版本.
"升级"与"最新"类似,不同之处在于,如果模块当前需要的版本高于最新版本 Select 的版本(例如,预发布),则升级将 Select 当前版本.
例如,如果v1.2.2和v1.2.3-之前的版本可用,则最新的查询将 Select v1.2.2,即使v1.2.3-之前的版本更高.