从 v1.11 Go 开始增加了对模块的支持。命令
go mod init <package name> go build
将生成go.mod并go.sum包含找到的所有版本的软件包的依赖文件。
go.mod
go.sum
如果模块没有任何版本,则使用该模块的最新提交。如果模块确实有版本,则选择最新的作为依赖项。
但是,有时我需要的功能尚未发布在已发布的版本中,而是来自该版本之后的提交。如何设置go.mod不指向模块的发布,而是指向模块存储库中的特定提交?
看起来我可以在 go.mod 中手动完成
module /my/module require ( ... github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe ... )
哪里v0.0.0不对应于上次发布的发布标签,20181121201909是提交时间戳,af044c0995fe还是提交哈希?应该手动查找和输入此类信息,还是有更好的方法?
v0.0.0
20181121201909
af044c0995fe
只需在您想要的提交哈希处“去获取”:
go get github.com/someone/some_module@af044c0995fe
‘go get’ 将正确更新依赖文件(go.mod、go.sum)。