我已经安装了gitosis,但是当我使用repos时,我有一些奇怪的事情。 在配置中我有
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = me@server me@laptop
[group prj1]
writable = prj1
members = me@laptop
并在/ home / git / repositories中创建了目录prj1.git,其中包含空的git repo。
我可以毫无问题地从服务器和笔记本电脑上使用gitosis-admin,但是当我在我的笔记本电脑上尝试 git clone prj1时,我看到了
$ git clone git@server:prj1.git
Initialized empty Git repository in /Users/alec/temp/prj1/.git/
fatal: no matching remote head
好的,让我们将prj1从笔记本电脑推送到服务器:
$ git push origin master:refs/heads/master
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly
怎么了?
答案 0 :(得分:5)
您的笔记本电脑上的以下内容是否可以解决此问题? 而不是git clone:
mkdir prj1
cd prj1
git init
touch README
git add .
git commit -m "Added blank readme"
git remote add origin git@server:prj1.git
git push origin master
ebneter在评论中添加:
您可能会提到其工作原因是您无法克隆空仓库。
(正如我的用户经常发现......
这提醒了OP问题:
...在
/home/git/repositories
我用空git repo 创建了目录prj1.git
这在那里并不理想。
这个SO question提到了克隆空仓库的问题:
换句话说,不要尝试克隆空仓库,而是在创建它之后,向它推送一个包含一个无害文件的简单仓库。然后它不再是空的,可以克隆。
从那时起,Chris Johnsen评论:
任何Git晚于1.6.2
(实际上自2009年3月以来)
可以“克隆”空的存储库 (吓唬引号,因为它实际上只是正常初始化和设置远程,并为假定的,最终主分支创建跟踪配置)。
答案 1 :(得分:5)
即使按照答案1中的步骤操作,我也遇到了同样的问题。
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
为我解决了。显然旧版本的setuptools可以使更新后的钩子不可执行。请参阅this page。
答案 2 :(得分:1)
在我想要推送到新的存储库之后,我遇到了同样的消息:
git push -u origin master
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly
原因是我在gitosis-admin / keydir中有2个相同的ssh pub-keys(相同的键,不同的名字)。
删除其中一个后,我可以推送到新的存储库
答案 3 :(得分:0)
出现同样的问题,原因是我在我的本地编辑了gitosis.conf并且没有将它提交给服务器。
答案 4 :(得分:0)
在我的情况下,ssh客户端从〜/ .ssh。
中选择了错误的私钥[gitosis] loglevel = DEBUG帮助查看错误的用户正在登录。