场景:
当你多个项目,都需要使用一个或者多个方法,那么可以将公共方法,抽成一个包,进行管理(类似Log模块等)。这时候可以将你的包上传到私有的仓库,其他项目引入该包即可。下面来介绍下,如何引用私有仓库的包。
1. 创建一个新的 Git 标签
假设你已经在你的私有 GitLab 仓库目录中,并且你已经提交了所有的更改(运行了 git add
和 git commit
)。现在你可以通过如下命令创建一个新的标签。
git tag v0.1.0
如果你想要附加注释到该标签,可以使用:
git tag -a v0.1.0 -m "Initial release"
2. 推送标签到 GitLab:
创建标签之后,需要将其推送到远程仓库:
git push origin v0.1.0
这样标签 v0.1.0 就会被推送到远程仓库,你的模块版本也就设置好了。
3. 在 go.mod
文件中使用这个版本号
在你需要调用这个私有模块的项目中,更新 go.mod
文件,指向这个特定的版本号。这可以通过 go get
命令自动完成:
go get gitlab.com/yourusername/yourrepository@v0.1.0
或者手动编辑 go.mod
文件:
module your-other-projectgo 1.18require (gitlab.com/yourusername/yourrepository v0.1.0 )
在这里需要注意,gitlab.com/yourusername/yourrepository这里的包名一定需要和依赖的包名保持一致
4. 更新依赖
go mod tidy
5.注意事项
5.1 访问GitLab仓库认证失败
fatal: could not read Username for 'https://gitlab.xxxx.cn': terminal prompts disabled Confirm the import path was entered correctly. If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.
出现此错误通常是在访问私有 GitLab 仓库时认证失败。要解决这个问题,可以通过以下方法来确保 go get
能够正确地通过 HTTPS 认证访问私有仓库。
这里介绍一种设置环境变量的方法
1. 创建一个 Shell 脚本文件来返回访问令牌:
echo 'echo <your_personal_access_token>' > /path/to/git-askpass.sh chmod +x /path/to/git-askpass.sh
拓展如何获得access_token:
- 登录到你的 GitLab 账户。
- 点击右上角的用户头像,然后选择 "Settings"。
- 在左侧导航栏中选择 "Access Tokens"。
- 输入 token 名称,选择相应的作用域(至少需要
read_repository
权限)。 - 点击 "Create personal access token"。
2. 设置环境变量
export GIT_ASKPASS='/path/to/git-askpass.sh' export GIT_TERMINAL_PROMPT=0
3.配置 GOPRIVATE
如果尚未配置,确保设置 GOPRIVATE
环境变量来指示 Go 不要在 go get
期间使用 Go module proxy。
export GOPRIVATE=gitlab.com/yourusername/*
通过这种方式,GIT_ASKPASS
脚本会在 Git 认证时返回访问令牌,从而避免手动输入用户名和密码。