在 Ubuntu 上,Go 的“版本控制”通常包含两类场景:一是管理多个 Go 运行时版本(如 1.20、1.21),二是管理项目依赖的模块版本(go.mod)。下面分别给出可操作的步骤与要点。
管理多个 Go 运行时版本
管理 Go 模块依赖版本
- 初始化模块:go mod init ,生成 go.mod(建议同时设置 go 1.20 或更高版本指令)
- 添加或升级依赖
- 自动解析并写入:go get github.com/example/dep@latest
- 指定版本:go get github.com/example/dep@v1.2.3
- 升级主版本(如 v2+):遵循语义化导入路径(示例:github.com/example/dep/v2),再 go get github.com/example/dep/v2@v2.0.0
- 整理依赖:go mod tidy(清理未使用、补齐缺失)
- 本地替换调试:replace github.com/example/dep => …/local-copy(仅对本模块生效)
- 校验一致性:go mod verify
- 常用建议
- 提交 go.mod 与 go.sum 到版本控制
- 使用语义化版本(SemVer),避免直接依赖 master/HEAD
- 私有模块配置 GOPRIVATE 或使用 replace 指向私有仓库
- 多项目协作时统一 Go 版本 与 依赖版本,减少“在我机器上能跑”的问题。
快速选择建议
- 需要在同一台机器上频繁切换 Go 版本并做项目级依赖隔离:优先用 GVM(pkgset) 或 asdf。
- 追求稳定与系统一致性:用 APT;需要最新特性或精确版本:用 官方二进制包。
- 依赖管理统一用 Go Module,并将 go.mod/go.sum 纳入 Git;团队内约定 Go 版本 与 依赖策略。