Go模块替换为本地模块的特定版本

Go modules replace with a specific version of a local module

我有一个 go.mod 文件,如下所示:

module someName

go 1.13

require (
    .
    .
    golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
    localpackage v0.0.0
)

replace localpackage => ../localpackage

正如预期的那样有效!我想不通的是如何向 replace 指令添加特定版本或提交哈希!

例如:

replace localpackage => ../localpackage v1.0.0

replace localpackage => ../localpackage v0.0.0-20190731182444-35453ccff3d6

这样做会导致错误:

replacement module directory path "../localpackage" cannot have version

错误很明显,我不应该将版本添加到本地替换。我检查了 wiki 但找不到答案!

问题:

是否可以添加这种 replace 内容以及如何添加?我在这里错过了什么?

如错误所述:当替换指令指向本地文件夹时,您无法指定版本。不能保证也不需要替换文件夹包含版本控制系统的文件,只有 "snaphots" 个 Go 源代码是完全有效的。所以在很多情况下,指定版本是没有意义的。

但是,如果您的本地文件夹是 git 存储库的克隆,您只需将其切换到您想要的版本即可。例如。在该本地文件夹中执行 git checkout v1.0.0 以切换到该版本,将使用该版本。