1、关于Git环境的奇怪问题
在Linux平台用git clone https://gitlab.xxx时总是报错:
remote: The project you were looking for could not be found or you don't have permission to view it.
fatal: repository 'https://gitlab.xxx/' not found
注意:通过git clone https://xxxuser@gitlab.xxx.git -b 1.1.0 这种方工是可以的,但无法解决工程里引用gitlab的问题
试了网上和AI的所有办法都无法生效,比如清Git缓存、换Git全局账户、甚至卸载Git重新安装都不好使,最后AI提议使用命令跟踪访问gitlab的过程:
GIT_CURL_VERBOSE=1 git clone https://gitlab.xxx.git -b 1.1.0
发现确实报授权失败,并且里面有个陌生的账号如:
17:21:28.554587 http.c:878 == Info: Server auth using Basic with user 'xxxuser'
其中xxxuser是一个同事的账号,只是不在我们的仓库权限用户组里,那为什么他的账号会出现在我们访问自己的仓库时授权呢?
后来找到他,原来在他的工程里有个脚本导致的问题:
go env -w GOPRIVATE=gitlab.yingzi.com
export GO_MODULES_GITLAB_USER="username"
export GO_MODULES_GITLAB_TOKEN="token"
echo "machine gitlab.xxx login {GO_MODULES_GITLAB_USER} password {GO_MODULES_GITLAB_TOKEN}" > ~/.netrc
暂时的解决方案是把他的账户加入到我们的仓库权限组里。
问了deepseek,发现了原因,ds是这样说的:
第三个命令是用echo生成一个.netrc文件的内容,写入到用户主目录下的.netrc文件中。这个文件通常被curl、git等工具用来存储机器对应的登录信息。格式是machine后面跟域名,然后login用户名,password密码或令牌。
向ds提问
是否意味着在本机器上获取gitlab.xxx的内容,只能通过.netrc里设置的账号实现?可以设置多个用户名和密码吗?
同时.netrc不支持设置多账户条目,所以需要考虑其它方法来解决这个问题。或者通过 git@gitlab.xxx方式访问,或者把.netrc删除。