近期有个需求要多个项目使用一个库的功能,这个库要私有化,所以进行了研究一下,问了ai后进行总结记录
go get 本身是支持从私有 git 仓库拉取go库的
创建一个新的项目目录,然后使用 go mod init 新建项目
# 仓库地址:github.com/example/abc/a 也就是模块地址go mod init github.com/example/abc/a# 更新依赖模块git mod tidy
正常开发就行了,提交、发布标签(可选)就行了
# 将 gitlab.yourcompany.com 替换为你的私有仓库域名,可以使用通配符等go env -w GOPRIVATE=gitlab.yourcompany.com,github.com/your-org/private-repo
如果这个私有库不支持ssh拉取,还需要进行配置,将账号密码写入~/.nttrc,以”cnb.cool“仓库为例
# 用你喜欢的编辑器,内容如下(注意空格)machine cnb.coollogin YOUR_USER_NAME # ← 你的 cnb 登录名password YOUR_TOKEN_HERE # ← 刚才复制的 Token
go get github.com/example/abc/a
go get 本身就能升级(或降级)模块,只要不带 @version 时默认会升级到该主版本下的最新版;
想显式控制版本,用 @<tag|branch|commit|latest> 即可。
常用命令一览
| 目的 | 命令 |
|---|---|
| 升到当前主版本最新版 | go get cnb.cool/xxx/go-pkg/xxx |
| 升到最新 主版本(可能含 Breaking) | go get cnb.cool/xxx/go-pkg/xxx@latest |
| 升到指定 语义化版本 | go get cnb.cool/xxx/go-pkg/xxx@v1.2.3 |
| 升到指定 分支最新提交 | go get cnb.cool/xxx/go-pkg/xxx@main |
| 升到指定 commit | go get cnb.cool/xxx/go-pkg/xxx@4f5c6a7 |
| 降级到旧版本 | go get cnb.cool/xxx/go-pkg/xxx@v1.1.0 |
| 清理无用旧版本 | go mod tidy |
操作步骤(示例)
go.mod)。
# 示例:升到 v1.3.0go get cnb.cool/xxx/go-pkg/xxx@v1.3.0
go.mod 与 go.sum,再 go mod tidy 一下即可。私有仓库提醒
GOPRIVATE=cnb.cool/xxx/go-pkg/* 仍生效。 .netrc,Token 别过期;若用 SSH,确保 insteadOf 仍配置。一句话总结
“升级”就是再 go get 一次,只是后面加 @版本/分支/commit;
“最新” 用 @latest,“回退” 用 @旧版本号。
正在学习Go语言的PHP程序员。