GIT克隆和第一个GIT推送问题

GIT克隆和第一个GIT推送问题,git,gitolite,git-clone,git-remote,Git,Gitolite,Git Clone,Git Remote,我有两个问题。我有Ubuntu10.10,我用gitolite安装了git服务器 工具。一切都很顺利。gitolite的gl setup命令创建了两个存储库: gitolite管理和测试 1) 问题1 我的默认gitolite管理员用户名为“git”,并且已经创建 首先,我必须克隆gitolite管理repo,对conf/gitolite.conf进行一些更改,以添加一些新的repo和一个新用户(我添加了根用户,之前创建了和私钥/公钥,还将公钥添加到keydir文件夹),然后我必须添加/提交并将

我有两个问题。我有Ubuntu10.10,我用gitolite安装了git服务器 工具。一切都很顺利。gitolite的gl setup命令创建了两个存储库: gitolite管理和测试

1) 问题1

我的默认gitolite管理员用户名为“git”,并且已经创建

首先,我必须克隆gitolite管理repo,对conf/gitolite.conf进行一些更改,以添加一些新的repo和一个新用户(我添加了根用户,之前创建了和私钥/公钥,还将公钥添加到keydir文件夹),然后我必须添加/提交并将更改推回。3

信息:我的~git/.ssh/authorized_keys文件很好,从command=开始,只有一个值——我首先创建的git用户的公钥

不起作用:

git@vs1:~/$ git clone git@<<SERVER_IP>>:gitolite-admin.git
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
git@<<SERVER_IP>>'s password:
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
内容包括:

host gitolite
     user git
     hostname <<SERVER_IP>>
     identityfile ~/.ssh/git.pub

git@vs1:~/$ git clone gitolite:gitolite-admin
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
git@89.35.160.243's password:
remote: Counting objects: 23, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 23 (delta 4), reused 0 (delta 0)
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (4/4), done.
我尝试了各种改变,比如将整个路径放到存储库中(即使我在任何地方都看不到,所以这是不正确的),我得到了:

Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To git@<<SERVER_IP>>:/home/git/repositories/myrepo.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@<<SERVER_IP>>:/home/git/repositories/myrepo.git'
计数对象:3,完成。
写入对象:100%(3/3),243字节,完成。
总计3(增量0),重复使用0(增量0)
远程:环境总帐未设置
远程:BEGIN失败--编译在钩子/更新行20处中止。
远程:错误:钩子拒绝更新refs/heads/master
到git@:/home/git/repositories/myrepo.git
! [远程拒绝]主机->主机(拒绝挂钩)
错误:无法将某些引用推送到“git@:/home/git/repositories/myrepo.git”

我做错了什么?这是越来越令人沮丧,因为对于这样的基本任务,我经历了这种不寻常的困难。我对SVN有很好的经验,这是GIT的第一个剧本


提前感谢您的帮助

注意1/:如果
identityfile
是一个默认名称(
id\u rsa.pub
id\u rsa
),这可能会起作用。由于情况并非如此,因此必须使用
config
文件

注2/您已经创建了git回购,但您是否让gitolite知道了这一点?

如果您以
root
身份通过ssh,这意味着use有自己的
~/.ssh/id\u rsa(.pub)
密钥,并且这些密钥是为Gitolite注册的

关于repo路径的注意事项:永远不要将repo的完整本地路径用于推/拉地址:这将完全绕过Gitolite


gazillon随后评论说,似乎:

  • 所有远程地址都应以
    git@somehostname:
    arepo.git
    :您希望用户在
    somehostname
    上以“
    git
    ”(负责git和gitolite的帐户)的形式执行git命令。
    这意味着“
    myuser
    ”的公钥需要在
    somehostname:~git/.ssh/authorized_keys

  • 任何时候ssh连接不符合您的要求,您都可以从查看这些连接开始。
    例如:
    ssh-vvvgit:somehostname
    可以很好地说明正在发生的事情

  • 如果要避免使用
    config
    文件,则需要对这些公钥/私钥使用标准命名约定(
    ~myuser/.ssh/id\u rsa
    ,以及
    ~myuser/.ssh/id\u rsa.pub

1)好的,但这很奇怪,所有教程(几乎)甚至它们的文档都没有提到为用户git创建~/.ssh/config文件的必要性。现在我清理了所有的安装并重新安装了所有的东西。我在没有密码的情况下重新创建了用户“git”,因为我认为这没问题,因为我们使用的是ssh的私钥/公钥登录(还使用了~/.ssh/authorized_keys文件)。现在,当我试图克隆gitolite admin repo时,因为它保留了请求我的密码(而不是使用公钥)。2)是的,repo是以前创建的,它在repositories文件夹中可用,并且用户根以RW+权限添加到该repo。@ValentinTudor 1)应该意味着找不到ssh密钥(错误的主页、错误的路径或错误的名称):请参阅@ValentinTudor 2)错误消息(
fatal:'myrepo.git'似乎不是git存储库
)意味着您的pubkey(root)正在绕过gitolite,直接进入shell(再次)感谢您的回答!1) 我通过在用户“git”上重新创建~/.ssh/config文件解决了这个问题,并完美地完成了克隆和所有操作(我必须使用主机“gitolite”并仅使用git clone gitolite:gitolite admin语法,或者使用“somehostname”并仅使用git clone)git@somehostname:gitolite管理员。我想这就是它应该如何工作的。
git remote add origin git@<<SERVER_IP>>:myrepo.git
fatal: 'myrepo.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To git@<<SERVER_IP>>:/home/git/repositories/myrepo.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@<<SERVER_IP>>:/home/git/repositories/myrepo.git'