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

时间:2012-01-27 22:13:09

标签: git gitolite git-clone git-remote

我有两个问题。我有Ubuntu 10.10,我用gitolite安装了git服务器 工具。一切都很好。 gitolite的gl-setup命令创建了2个存储库: gitolite-admin和测试。

1)问题1

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

首先,我必须克隆gitolite-admin repo,进行一些更改,让我们说conf / gitolite.conf添加一些新的repo和一个新用户(我添加了root用户,我创建了私有/公钥之前并且还将公钥添加到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

保护正常工作:

touch ~/.ssh/config

内容:

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.

为什么我没有完成第一个变体的工作?所有的教程都说它应该没有任何问题。我必须使用第二个变体在〜/ .ssh / config文件中创建主机配置。这有点令人沮丧。 repo路径是/ home / git / repositories,ssh是默认端口22。

2)问题2

在同一台服务器上使用root用户,我在/var/www/example.com/www中创建了一个空文件夹。我运行了git init,然后添加了一个文件(.gitignore),运行了git add -A和git commit -m“...”。

然后我为原点创建了远程路径:

git remote add origin git@<<SERVER_IP>>:myrepo.git

我跑了git push origin master,这就是我得到的:

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'

我做错了什么?这令人沮丧,因为对于这样的基本任务,我遇到了这种不寻常的困难。我对SVN有很好的经验,这是第一次与GIT一起玩。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

1 /的注意事项:如果identityfile是默认名称(id_rsa.pubid_rsa),那可能会有效。由于情况并非如此,因此config文件是强制性的。

注意2 /你已经创建了一个git repo,但是你让gitolite知道了吗? 你should declare the new repo in the config file of the gitolite-admin repo

如果您将ssh推送为root,则表示use使用了自己的~/.ssh/id_rsa(.pub)密钥,并且这些密钥已在Gitolite中注册。

注意repo路径:永远不要使用repo的完整本地路径作为推/拉地址:这将彻底绕过Gitolite。


gazillon评论说,看来:

  • 所有远程地址都应以 git@somehostname: arepo.git开头:您希望用户在somehostname上执行git命令为“{{1} }'(负责git和gitolite的帐户) 这意味着“git”的公钥需要在myuser

  • 上注册
  • 任何时候ssh连接都没有按照你的方式进行,你可以先查看那些ssh debugging tips
    例如:somehostname:~git/.ssh/authorized_keys可以很长时间地说明正在发生的事情

  • 如果您想避开ssh -vvv git:somehostname文件,则需要对这些公钥/私钥(config和{~myuser/.ssh/id_rsa使用标准命名约定{1}})