Go模块不同主版本必须用不同路径,如v1为github.com/yourname/project,v2为github.com/yourname/project/v2;小版本共用同一路径,仅靠tag区分,工具链自动解析最新兼容版。

在 Go 中,模块版本分支不是 Git 分支,而是通过 语义化版本(SemVer)+ 模块路径后缀 实现的。Go 官方不支持“在同一仓库用不同 Git 分支发布同一模块的不同主版本”,而是要求:不同主版本(如 v1 → v2)必须使用不同的模块路径(module path),通常通过在 import path 末尾添加 /v2、/v3 等实现。
Go 的版本管理基于模块路径唯一性。例如:
github.com/yourname/project 对应 v0/v1 版本(默认无后缀)github.com/yourname/project/v2 是独立模块,对应 v2.x 系列github.com/yourname/project/v3 同理,不可与 v2 共享同一路径这是强制约定,否则 go 命令会报错:invalid version: module contains a go.mod file, so major version must be compatible。
假设当前主干是 v1,要开发不兼容的 v2 功能:
立即学习“go语言免费学习笔记(深入)”;
PHP威客系统威客贰系统是国内领先的威客网站内容管理系统,基于PHP+Mysql架构开发。整合UCHOME系统,系统内容模块由:威客悬赏,招标任务,人才库,人才,招聘,新闻资讯,在线支付,发贴推广,案例示范等多种功能组成。 威客贰系统独创的单人悬赏、 多人悬赏 、计件悬赏 、 定金招标、 本地招标为核心任务模式。超强的发贴推广可以分配到不同的任务模式不同的会员等级有不同的提成费用,根据网站自身需要
0
git checkout -b release/v2
go.mod 第一行:module github.com/yourname/project/v2
go mod tidy 自动更新依赖路径(所有内部 import 也要改成 github.com/yourname/project/v2/xxx)git tag v2.0.0 && git push origin v2.0.0
两个版本可独立迭代:
main 或 v1-maintenance 分支,保持 module github.com/yourname/project,发 v1.1.1 tagrelease/v2 分支上开发,发 v2.1.0 tagimport "github.com/yourname/project" 或 import "github.com/yourname/project/v2"
注意:v2 模块内不能直接 import v1 路径,反之亦然 —— 它们是逻辑隔离的模块。
v2.0.0、v2.1.0、v2.1.1 属于同一主版本,全部使用 github.com/yourname/project/v2 路径,仅靠 tag 区分。Go 工具链自动解析最新兼容版本(如 go get github.com/yourname/project/v2@latest)。
不复杂但容易忽略。
以上就是如何在Golang中创建模块版本分支_管理不同功能版本的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号