公司使用的Git管理工具是Gitosis,在使用时,出现了不能拉取问题
在gitosis.conf中做好了配置,且上传了公钥的情况下,一直不能拉取代码,报错如下
ERROR:gitosis.serve.main:Repository read access denied
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.
网上查来查去,就说是公钥没上传,或者名字写错了等等。实际上gitosis.conf中的名字,和公钥的名字没有问题且对应上了
后来摸索,找到了原因,以下是解决方案:
1、切换到git用户下,进入/usr/bin目录
2、执行如下命令
./gitosis-init < /var/opt/gitlab/repositories/gitosis-admin.git/gitosis-export/keydir/sm_new_hzb\@work.pub
至此,重试成功
原因如下:
1、切换到git用户下是因为拉取代码使用的是git用户。因此,要git用户对公钥及配置进行识别
2、执行gitosis-init命令,引入公钥信息,将配置及公钥对应起来
理解如下:
我们去窗口办事,以前是填完表把名字写进去(gitosis.conf),同时去了把身份证(公钥)交到前台就可以
这次的问题是,我明明填完了表(gitosis.conf),把身份证(公钥)交了,回去办事(拉代码)他一直说我这两个信息对应不上
解决方式是我交完身份证后,给窗口人员说了一下,这是我的身份证,你看一下(就是gitosis-init这个命令),系统读取公钥后,通过验证
至此,结束
附,文档可以看出很多问题,如果没有解决的话,建议大家看一下文档https://git-reference.readthedocs.io/zh_CN/latest/Git-on-the-Server/Gitosis/