How to point Go module dependency in go.mod to a latest commit in a repo?
从v1.11开始,Go添加了对模块的支持。 指令
1 2 | go mod init <package name> go build |
会生成
如果模块没有任何发行版,则使用该模块的最新提交。 如果某个模块确实具有发行版,则将最新的一个作为依赖项。
但是有时我需要的功能不是发布的版本,而是该版本之后的提交。 如何将
看起来我可以用go.mod手动完成
1 2 3 4 5 6 7 | module /my/module require ( ... github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe ... ) |
其中
只需"转到"所需的提交哈希即可:
1 | go get github.com/someone/some_module@af044c0995fe |
'go get'将正确更新依赖项文件(go.mod,go.sum)。
详细信息:https://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies
除了Everton关于使用
-
go get github.com/someone/some_module@master -
go get github.com/someone/some_module@dev_branch
这些示例在相应的分支上获取最新的提交。
它仍将作为伪版本记录在您的
一段时间以来,我一直在努力思考它对每个人的工作方式,但我无法运行它。对我来说,我必须提交到master分支,然后才能够获得它。
为了使go使用特定的分支,提交ID或标签,您需要通过运行以下命令为go模块启用标志
go env -w GO111MODULE=on
之后,我们将能够做
1 2 3 | go get repo@branchname go get repo@tag go get repo@commithash |
另外,如果您在go.mod文件中将"最新"一词替换为标签,则会将其更改为模块的最新标签。
例如:
1 2 3 4 5 6 7 | module /my/module require ( ... github.com/someone/some_module latest ... ) |
会变成
1 2 3 4 5 6 7 | module /my/module require ( ... github.com/someone/some_module v2.0.39 ... ) |
运行