go get 拉取私有库模块 git | go | mod |

更新于 2025-11-19 11:59 3
专栏: Golang 标签: git Go

近期有个需求要多个项目使用一个库的功能,这个库要私有化,所以进行了研究一下,问了ai后进行总结记录

go get 本身是支持从私有 git 仓库拉取go库的

1. 模块开发、提交仓库

创建一个新的项目目录,然后使用 go mod init 新建项目

  1. # 仓库地址:github.com/example/abc/a 也就是模块地址
  2. go mod init github.com/example/abc/a
  3. # 更新依赖模块
  4. git mod tidy

正常开发就行了,提交、发布标签(可选)就行了

2. 配置本地go环境来支持你的私有库

  1. # 将 gitlab.yourcompany.com 替换为你的私有仓库域名,可以使用通配符等
  2. go env -w GOPRIVATE=gitlab.yourcompany.com,github.com/your-org/private-repo

如果这个私有库不支持ssh拉取,还需要进行配置,将账号密码写入~/.nttrc,以”cnb.cool“仓库为例

  1. # 用你喜欢的编辑器,内容如下(注意空格)
  2. machine cnb.cool
  3. login YOUR_USER_NAME # ← 你的 cnb 登录名
  4. password YOUR_TOKEN_HERE # ← 刚才复制的 Token

3. 使用 go get 拉取项目模块就行了

  1. 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

操作步骤(示例)

  1. 进入自己的项目根目录(含 go.mod)。
  2. 执行升级
    1. # 示例:升到 v1.3.0
    2. go get cnb.cool/xxx/go-pkg/xxx@v1.3.0
  3. 自动改写 go.modgo.sum,再 go mod tidy 一下即可。

私有仓库提醒

  • 先保证 GOPRIVATE=cnb.cool/xxx/go-pkg/* 仍生效。
  • 若用 HTTPS + .netrc,Token 别过期;若用 SSH,确保 insteadOf 仍配置。

一句话总结
“升级”就是再 go get 一次,只是后面加 @版本/分支/commit“最新”@latest“回退”@旧版本号