go mod tidy会自动升级go.mod的Go版本吗?如何禁用该行为?
关于go mod tidy自动升级Go版本的问题解答
这是预期行为吗?
是的,这属于Go工具链的预期行为。当你使用Go 1.21版本执行go mod tidy时,工具会自动将go.mod文件中的go指令版本更新为当前本地使用的Go版本。从Go 1.16开始,go指令不仅定义项目所需的最低Go版本,还会关联当前工具链的特性行为,所以工具会同步更新该版本标识。
如何禁用自动升级?
可以通过以下方式阻止go mod tidy修改go.mod中的Go版本:
- 临时生效(仅当前终端会话):
export GOFLAGS="-mod=readonly" go mod tidy - 永久生效(针对当前用户):
将上述export命令添加到你的shell配置文件(如~/.bashrc或~/.zshrc),后续每次打开终端都会自动应用该设置。 - 单次执行指定参数:
go mod tidy -mod=readonly
-mod=readonly参数会让Go工具以只读模式处理模块文件,既不会修改go.mod的版本信息,还会检查当前依赖是否与go.mod、go.sum一致,不一致时会报错提示。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

