我经常看到go。Sum随此差异而变化:
+github.com/owner/pkg v0.0.0-abc h1:$hash
github.com/owner/pkg v0.0.0-abc/go.mod h1:$hash
这是什么?当模块最初被列为依赖项时,为什么第一行不是提交的一部分?它经常发生,我甚至不确定它是什么?
第一行给出了v0.0.0-abc
版本模块github.com/owner/pkg
完整源代码的校验和。
第二行给出go.mod
文件的校验和,只有模块github.com/owner/pkg
在v0.0.0-abc
版本。
如果你只有第二行而不是第一行,这意味着你的模块的依赖关系在v0.0.0-abc
版本上满足github.com/owner/pkg
的版本要求,但到目前为止你所做的一切实际上都不关心相应的源代码。
通常,您会发现go mod tidy
会根据需要添加或删除源代码的校验和。
然而,请注意,在(即将到来的)Go 1.16之前的go
命令版本有一个错误,它们有时也会为源代码保留不必要的校验和。(详见https://golang.org/issue/33008)