//go mod
require(
gitlab.sludev.shop/client/golang/im_client v0.0.1
)
replace gitlab.sludev.shop/client/golang/im_client => gitlab.sludev.shop/client/golang/im_client v0.0.1
使用:
gitlab.sludev.shop/client/golang/im_client
go mod env private配置指向gitlab.sludev.shop/
仓库权限为owner
gitlab群组结构:client/golang/im_client,仓库建在im_client里
报错内容:
github.com/onsi/ginkgo/v2: gitlab.sludev.shop/client/golang/im_client@v0.0.1: reading gitlab.sludev.shop/client/golang/im_client/go.mod at revision im_client/v0.0.1: git ls-remote -q http://gitlab.sludev.shop/client/golang.git in /home/x/.cache/go-mod/cache/vcs/695f35fe9523acaec1dff16695598e5fc0dac24529ead9cf06e1c055af20cd9a: exit status 128:
remote: The project you were looking for could not be found or you don't have permission to view it.
fatal: repository 'http://oauth2:token@gitlab.sludev.shop/client/golang.git/' not found
居然还报错没有权限或者不存在
golang从gitlab群组私有仓库拉取代码报错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案让您满意,请采纳、点赞、关注,非常感谢!
.
每日一句正能量,让它带给您好心情:努力不是为了让别人看见,而是为了对得起自己。
.根据报错信息分析,这是一个典型的 Go 模块从 GitLab 私有仓库拉取代码时的认证问题。错误显示项目不存在或没有权限,但实际上是因为认证方式不正确。
问题分析
从错误信息可以看到:
- 仓库 URL:
http://oauth2:token@gitlab.sludev.shop/client/golang.git/ - 实际仓库路径应该是:
client/golang/im_client - Go mod 在尝试访问父级目录
client/golang.git而不是具体的仓库
解决方案
1. 配置 Git 凭证
首先配置 Git 访问私有仓库的凭证:
git config --global url."https://oauth2:${GITLAB_TOKEN}@gitlab.sludev.shop".insteadOf "https://gitlab.sludev.shop"2. 设置环境变量
创建并设置 GitLab 访问令牌:
# 生成 GitLab 访问令牌(在 GitLab 网站设置中) export GITLAB_TOKEN=你的访问令牌 # 设置 Go 模块代理和私有仓库 export GOPRIVATE=gitlab.sludev.shop export GOINSECURE=gitlab.sludev.shop3. 修改 go.mod 文件
你的
go.mod文件中的 replace 指令格式不正确:module your-module-name go 1.19 require ( gitlab.sludev.shop/client/golang/im_client v0.0.1 ) replace gitlab.sludev.shop/client/golang/im_client => gitlab.sludev.shop/client/golang/im_client v0.0.1应该修改为:
module your-module-name go 1.19 require ( gitlab.sludev.shop/client/golang/im_client v0.0.1 ) replace gitlab.sludev.shop/client/golang/im_client => gitlab.sludev.shop/client/golang/im_client.git v0.0.14. 完整的配置脚本
创建一个设置脚本
setup.sh:#!/bin/bash # 设置 GitLab 访问令牌 export GITLAB_TOKEN=你的实际令牌 # 配置 Git 替代 URL git config --global url."https://oauth2:${GITLAB_TOKEN}@gitlab.sludev.shop".insteadOf "https://gitlab.sludev.shop" # 设置 Go 私有仓库 export GOPRIVATE=gitlab.sludev.shop export GOINSECURE=gitlab.sludev.shop # 清理 Go 模块缓存 go clean -modcache # 下载依赖 go mod download5. 永久配置方案
将配置添加到 shell 配置文件中(如
~/.bashrc或~/.zshrc):# GitLab 私有仓库配置 export GITLAB_TOKEN=你的访问令牌 export GOPRIVATE=gitlab.sludev.shop export GOINSECURE=gitlab.sludev.shop # Git 配置(执行一次即可) git config --global url."https://oauth2:${GITLAB_TOKEN}@gitlab.sludev.shop".insteadOf "https://gitlab.sludev.shop"6. 验证配置
配置完成后验证:
# 测试 Git 访问 git ls-remote "https://gitlab.sludev.shop/client/golang/im_client.git" # 清理并重新下载依赖 go clean -modcache go mod tidy go mod download注意事项
- 令牌权限:确保 GitLab 访问令牌具有
read_repository权限 - 仓库路径:确认仓库完整路径是
client/golang/im_client - 网络访问:确保可以从当前环境访问 GitLab 服务器
- 缓存清理:修改配置后记得清理 Go 模块缓存
按照以上步骤配置后,应该可以正常从 GitLab 私有仓库拉取代码。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 仓库 URL: